Mercurial > illumos > illumos-gate
changeset 13132:75437b9749d3
6977005 ndmp: cannot span tapes with OSB 10.3.0.2 + 2010.Q1.2
6966171 directories with exactly 255 chars silently omitted from backups
author | Reza Sabdar <Reza.Sabdar@Sun.COM> |
---|---|
date | Mon, 16 Aug 2010 17:29:49 -0400 |
parents | 374aa7839ed5 |
children | 8c553b17498a |
files | usr/src/cmd/ndmpd/ndmp/ndmpd_util.c usr/src/cmd/ndmpd/tlm/tlm_traverse.c |
diffstat | 2 files changed, 8 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c Mon Aug 16 13:30:30 2010 -0700 +++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c Mon Aug 16 17:29:49 2010 -0400 @@ -1359,19 +1359,17 @@ } cmd.uscsi_buflen = request->datain_len; - cmd.uscsi_rqlen = sizeof (rq_buf); - cmd.uscsi_rqbuf = rq_buf; } else if (request->flags == NDMP_SCSI_DATA_OUT) { - cmd.uscsi_flags = USCSI_WRITE; + cmd.uscsi_flags = USCSI_WRITE | USCSI_RQENABLE; cmd.uscsi_bufaddr = request->dataout.dataout_val; cmd.uscsi_buflen = request->dataout.dataout_len; } else { cmd.uscsi_flags = USCSI_RQENABLE; cmd.uscsi_bufaddr = 0; cmd.uscsi_buflen = 0; - cmd.uscsi_rqlen = sizeof (rq_buf); - cmd.uscsi_rqbuf = rq_buf; } + cmd.uscsi_rqlen = sizeof (rq_buf); + cmd.uscsi_rqbuf = rq_buf; cmd.uscsi_timeout = (request->timeout < 1000) ? 1 : (request->timeout / 1000);
--- a/usr/src/cmd/ndmpd/tlm/tlm_traverse.c Mon Aug 16 13:30:30 2010 -0700 +++ b/usr/src/cmd/ndmpd/tlm/tlm_traverse.c Mon Aug 16 17:29:49 2010 -0400 @@ -1,6 +1,5 @@ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. */ /* @@ -252,7 +251,7 @@ goto skip_entry; (void) snprintf(file_path, PATH_MAX, "%s/", pn_path); - (void) strlcat(file_path, ptr->d_name, PATH_MAX); + (void) strlcat(file_path, ptr->d_name, PATH_MAX + 1); (void) memset(&fh, 0, sizeof (fs_fhandle_t)); if (lstat64(file_path, &st) != 0) { @@ -301,12 +300,12 @@ *el = 0; } else { (void) snprintf(file_path, PATH_MAX, "%s/", path); - (void) strlcat(file_path, dp->d_name, PATH_MAX); + (void) strlcat(file_path, dp->d_name, PATH_MAX + 1); rv = fs_getstat(file_path, efh, est); if (rv == 0) { *dpos = telldir(dirp); - (void) strlcpy(nm, dp->d_name, NAME_MAX); + (void) strlcpy(nm, dp->d_name, NAME_MAX + 1); *el = strlen(dp->d_name); } else { *el = 0; @@ -674,10 +673,8 @@ NDMP_LOG(LOG_DEBUG, "Error %d on readdir(%s) pos %d", rv, pnp->tn_path, tsp->ts_dpos); - if (STOP_ONERR(ftp)) { - NEGATE(rv); + if (STOP_ONERR(ftp)) break; - } /* * We cannot read the directory entry, we should * skip to the next directory.