summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorReza Sabdar <Reza.Sabdar@Sun.COM>2009-03-11 10:34:45 -0700
committerReza Sabdar <Reza.Sabdar@Sun.COM>2009-03-11 10:34:45 -0700
commitc211fc479225fa54805cf480633bf6689ca9a2db (patch)
tree64d4c0ad27a910ab2c653ce51567bd6311032d53 /usr/src
parent371d72dab1d0327bfe09b175ad38db564e3e245a (diff)
downloadillumos-gate-c211fc479225fa54805cf480633bf6689ca9a2db.tar.gz
6810894 OFAST NDMP: Remote restore failed via NBU
6787737 Amber Road NDMP: Backup fails with "Out of memory" error on NDMP client 6807614 EBS744:old file recover on NAS 7000 (amber road) over new file, only recovers ACLs 6807326 ndmpd should use timeout on SCMD_TEST_UNIT_READY
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/ndmpd/ndmp/ndmpd_main.c6
-rw-r--r--usr/src/cmd/ndmpd/ndmp/ndmpd_util.c1
-rw-r--r--usr/src/cmd/ndmpd/tlm/tlm_restore_writer.c2
-rw-r--r--usr/src/cmd/ndmpd/tlm/tlm_traverse.c8
4 files changed, 14 insertions, 3 deletions
diff --git a/usr/src/cmd/ndmpd/ndmp/ndmpd_main.c b/usr/src/cmd/ndmpd/ndmp/ndmpd_main.c
index 07ab251c98..20ceebc331 100644
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_main.c
+++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_main.c
@@ -50,7 +50,6 @@
#include "ndmpd.h"
#include "ndmpd_common.h"
-
/* zfs library handle & mutex */
libzfs_handle_t *zlibh;
mutex_t zlib_mtx;
@@ -259,10 +258,12 @@ main(int argc, char *argv[])
(void) sigaction(SIGHUP, &act, NULL);
(void) sigaction(SIGINT, &act, NULL);
(void) sigaction(SIGUSR1, &act, NULL);
+ (void) sigaction(SIGPIPE, &act, NULL);
(void) sigdelset(&set, SIGTERM);
(void) sigdelset(&set, SIGHUP);
(void) sigdelset(&set, SIGINT);
(void) sigdelset(&set, SIGUSR1);
+ (void) sigdelset(&set, SIGPIPE);
(void) daemonize_init(argv[0]);
@@ -302,6 +303,9 @@ main(int argc, char *argv[])
case 0:
break;
+ case SIGPIPE:
+ break;
+
case SIGHUP:
/* Refresh SMF properties */
if (ndmpd_load_prop())
diff --git a/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c b/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c
index c237d0ca89..e88edc4dce 100644
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c
+++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c
@@ -2595,6 +2595,7 @@ scsi_test_unit_ready(int dev_id)
ucmd.uscsi_cdb = (caddr_t)&cdb;
ucmd.uscsi_cdblen = CDB_GROUP0;
ucmd.uscsi_flags |= USCSI_SILENT;
+ ucmd.uscsi_timeout = 60; /* Allow maximum 1 min */
retval = ioctl(dev_id, USCSICMD, &ucmd);
diff --git a/usr/src/cmd/ndmpd/tlm/tlm_restore_writer.c b/usr/src/cmd/ndmpd/tlm/tlm_restore_writer.c
index 6c4c072f0f..3ced00a07d 100644
--- a/usr/src/cmd/ndmpd/tlm/tlm_restore_writer.c
+++ b/usr/src/cmd/ndmpd/tlm/tlm_restore_writer.c
@@ -1160,7 +1160,7 @@ restore_file(int *fp,
}
if (want_this_file) {
- *fp = open(real_name, O_CREAT | O_WRONLY,
+ *fp = open(real_name, O_CREAT | O_TRUNC | O_WRONLY,
S_IRUSR | S_IWUSR);
if (*fp == -1) {
NDMP_LOG(LOG_ERR,
diff --git a/usr/src/cmd/ndmpd/tlm/tlm_traverse.c b/usr/src/cmd/ndmpd/tlm/tlm_traverse.c
index f0efab40b0..11f33cff0f 100644
--- a/usr/src/cmd/ndmpd/tlm/tlm_traverse.c
+++ b/usr/src/cmd/ndmpd/tlm/tlm_traverse.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -259,6 +259,12 @@ fs_getstat(char *path, fs_fhandle_t *fh, struct stat64 *st, path_list_t **pl)
return (errno);
fh->fh_fid = st->st_ino;
+
+ if (!S_ISDIR(st->st_mode)) {
+ fh->fh_fpath = NULL;
+ return (0);
+ }
+
if (pl)
fh->fh_fpath = fs_add_pathlist(path, pl);
else