Print this page
NEX-13374 NDMP should be able to backup unmounted ZFS filesystems
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-9532 NDMP: readdir errors when file/directory has special characters
Reviewed by: Peer Dampmann <peer.dampmann@nexenta.com>
Reviewed by: Alexander Eremin <alexander.eremin@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-5801 Snapshots left over after failed backups
Reviewed by: Rick Mesta <rick.mesta@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Revert "NEX-5801 Snapshots left over after failed backups"
This reverts commit f182fb95f09036db71fbfc6f0a6b90469b761f21.
NEX-5801 Snapshots left over after failed backups
Reviewed by: Rick Mesta <rick.mesta@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
NEX-2990 ndmpd dumping core when used with ndmpcopy
NEX-2911 NDMP logging should use syslog and is too chatty
NEX-559 NDMP cannot backup/restore a file which spans multiple tapes

*** 1,7 **** --- 1,8 ---- /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2017 Nexenta Systems, Inc. All rights reserved. */ /* * BSD 3 Clause License *
*** 35,49 **** * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* Copyright (c) 2007, The Storage Networking Industry Association. */ /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */ ! /* Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ #include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> #include <errno.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <time.h> --- 36,51 ---- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* Copyright (c) 2007, The Storage Networking Industry Association. */ /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */ ! /* Copyright 2017 Nexenta Systems, Inc. All rights reserved. */ #include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> + #include <syslog.h> #include <errno.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <time.h>
*** 82,97 **** long xfer_size; ndmp_lbr_params_t *nlp; tlm_commands_t *cmds; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } if ((nlp->nlp_jstat = tlm_new_job_stats(jname)) == NULL) { - NDMP_LOG(LOG_DEBUG, "Creating job stats"); return (-1); } cmds = &nlp->nlp_cmds; (void) memset(cmds, 0, sizeof (*cmds)); --- 84,97 ----
*** 104,119 **** * when we write the data. */ if ((n = (512 * KILOBYTE/xfer_size)) <= 0) n = 1; xfer_size *= n; ! NDMP_LOG(LOG_DEBUG, "Adjusted read size: %d", xfer_size); } cmds->tcs_command = tlm_create_reader_writer_ipc(TRUE, xfer_size); if (cmds->tcs_command == NULL) { ! NDMP_LOG(LOG_DEBUG, "Error creating ipc buffers"); tlm_un_ref_job_stats(jname); return (-1); } nlp->nlp_logcallbacks = lbrlog_callbacks_init(session, --- 104,119 ---- * when we write the data. */ if ((n = (512 * KILOBYTE/xfer_size)) <= 0) n = 1; xfer_size *= n; ! syslog(LOG_DEBUG, "Adjusted read size: %d", xfer_size); } cmds->tcs_command = tlm_create_reader_writer_ipc(TRUE, xfer_size); if (cmds->tcs_command == NULL) { ! syslog(LOG_ERR, "Error creating ipc buffers"); tlm_un_ref_job_stats(jname); return (-1); } nlp->nlp_logcallbacks = lbrlog_callbacks_init(session,
*** 151,175 **** long xfer_size; ndmp_lbr_params_t *nlp; tlm_commands_t *cmds; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } if ((nlp->nlp_jstat = tlm_new_job_stats(jname)) == NULL) { - NDMP_LOG(LOG_DEBUG, "Creating job stats"); return (-1); } cmds = &nlp->nlp_cmds; (void) memset(cmds, 0, sizeof (*cmds)); xfer_size = ndmp_buffer_get_size(session); cmds->tcs_command = tlm_create_reader_writer_ipc(FALSE, xfer_size); if (cmds->tcs_command == NULL) { ! NDMP_LOG(LOG_DEBUG, "Error creating ipc buffers"); tlm_un_ref_job_stats(jname); return (-1); } nlp->nlp_logcallbacks = lbrlog_callbacks_init(session, --- 151,173 ---- long xfer_size; ndmp_lbr_params_t *nlp; tlm_commands_t *cmds; if ((nlp = ndmp_get_nlp(session)) == NULL) { return (-1); } if ((nlp->nlp_jstat = tlm_new_job_stats(jname)) == NULL) { return (-1); } cmds = &nlp->nlp_cmds; (void) memset(cmds, 0, sizeof (*cmds)); xfer_size = ndmp_buffer_get_size(session); cmds->tcs_command = tlm_create_reader_writer_ipc(FALSE, xfer_size); if (cmds->tcs_command == NULL) { ! syslog(LOG_ERR, "Error creating ipc buffers"); tlm_un_ref_job_stats(jname); return (-1); } nlp->nlp_logcallbacks = lbrlog_callbacks_init(session,
*** 213,249 **** { int i, rv; ndmp_name *ent; if (params == NULL) { - NDMP_LOG(LOG_DEBUG, "params == NULL"); return (-1); } if (nlp == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } rv = 0; for (i = 0; i < (int)nlp->nlp_nfiles; i++) { ! NDMP_LOG(LOG_DEBUG, "nlp->nlp_restored[%d]: %s", i, nlp->nlp_restored[i] ? "TRUE" : "FALSE"); if (!nlp->nlp_restored[i]) { ent = (ndmp_name *)MOD_GETNAME(params, i); if (ent == NULL) { - NDMP_LOG(LOG_DEBUG, "ent == NULL"); rv = -1; break; } if (ent->name == NULL) { - NDMP_LOG(LOG_DEBUG, "ent->name == NULL"); rv = -1; break; } ! NDMP_LOG(LOG_DEBUG, "ent.name: \"%s\"", ent->name); rv = MOD_FILERECOVERD(params, ent->name, ENOENT); if (rv < 0) break; } --- 211,243 ---- { int i, rv; ndmp_name *ent; if (params == NULL) { return (-1); } if (nlp == NULL) { return (-1); } rv = 0; for (i = 0; i < (int)nlp->nlp_nfiles; i++) { ! syslog(LOG_DEBUG, "nlp->nlp_restored[%d]: %s", i, nlp->nlp_restored[i] ? "TRUE" : "FALSE"); if (!nlp->nlp_restored[i]) { ent = (ndmp_name *)MOD_GETNAME(params, i); if (ent == NULL) { rv = -1; break; } if (ent->name == NULL) { rv = -1; break; } ! syslog(LOG_DEBUG, "ent.name: \"%s\"", ent->name); rv = MOD_FILERECOVERD(params, ent->name, ENOENT); if (rv < 0) break; }
*** 270,303 **** { ndmp_lbr_params_t *nlp; tlm_commands_t *cmds; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return; } cmds = &nlp->nlp_cmds; if (cmds == NULL) { - NDMP_LOG(LOG_DEBUG, "cmds == NULL"); return; } if (nlp->nlp_logcallbacks != NULL) { lbrlog_callbacks_done(nlp->nlp_logcallbacks); nlp->nlp_logcallbacks = NULL; - } else { - NDMP_LOG(LOG_DEBUG, "FH CALLBACKS == NULL"); } if (cmds->tcs_command != NULL) { if (cmds->tcs_command->tc_buffers != NULL) tlm_release_reader_writer_ipc(cmds->tcs_command); - else - NDMP_LOG(LOG_DEBUG, "BUFFERS == NULL"); cmds->tcs_command = NULL; - } else { - NDMP_LOG(LOG_DEBUG, "COMMAND == NULL"); } if (nlp->nlp_bkmap >= 0) { (void) dbm_free(nlp->nlp_bkmap); nlp->nlp_bkmap = -1; --- 264,289 ----
*** 305,316 **** if (session->ns_data.dd_operation == NDMP_DATA_OP_RECOVER && nlp->nlp_restored != NULL) { free(nlp->nlp_restored); nlp->nlp_restored = NULL; - } else { - NDMP_LOG(LOG_DEBUG, "nlp_restored == NULL"); } } /* * ndmp_write_utf8magic --- 291,300 ----
*** 323,340 **** { char *cp; long actual_size; if (cmd->tc_buffers == NULL) { - NDMP_LOG(LOG_DEBUG, "cmd->tc_buffers == NULL"); return (-1); } cp = tlm_get_write_buffer(RECORDSIZE, &actual_size, cmd->tc_buffers, TRUE); if (actual_size < RECORDSIZE) { - NDMP_LOG(LOG_DEBUG, "Couldn't get enough buffer"); return (-1); } (void) strlcpy(cp, NDMPUTF8MAGIC, RECORDSIZE); return (0); --- 307,322 ----
*** 375,386 **** { ndmp_lbr_params_t *nlp; nlp = (ndmp_lbr_params_t *)bksp->bs_cookie; if (S_ISDIR(attr->st_mode) && ndmp_force_bk_dirs) { - NDMP_LOG(LOG_DEBUG, "d(%lu)", - (uint_t)attr->st_ino); return (TRUE); } if (S_ISDIR(attr->st_mode) && dbm_getone(nlp->nlp_bkmap, (u_longlong_t)attr->st_ino) && ((NLP_ISDUMP(nlp) && ndmp_dump_path_node) || --- 357,366 ----
*** 398,429 **** * requirement. This requirement makes sense for dump format * but for 'tar' format, it does not. In provision to the * NDMP-v4 spec, for 'tar' format the intermediate directories * need not to be reported. */ ! NDMP_LOG(LOG_DEBUG, "p(%lu)", (u_longlong_t)attr->st_ino); return (TRUE); } if (attr->st_mtime > bksp->bs_ldate) { ! NDMP_LOG(LOG_DEBUG, "m(%lu): %lu > %lu", (uint_t)attr->st_ino, (uint_t)attr->st_mtime, (uint_t)bksp->bs_ldate); return (TRUE); } if (attr->st_ctime > bksp->bs_ldate) { if (NLP_IGNCTIME(nlp)) { ! NDMP_LOG(LOG_DEBUG, "ign c(%lu): %lu > %lu", (uint_t)attr->st_ino, (uint_t)attr->st_ctime, (uint_t)bksp->bs_ldate); return (FALSE); } ! NDMP_LOG(LOG_DEBUG, "c(%lu): %lu > %lu", (uint_t)attr->st_ino, (uint_t)attr->st_ctime, (uint_t)bksp->bs_ldate); return (TRUE); } ! NDMP_LOG(LOG_DEBUG, "mc(%lu): (%lu,%lu) < %lu", (uint_t)attr->st_ino, (uint_t)attr->st_mtime, (uint_t)attr->st_ctime, (uint_t)bksp->bs_ldate); return (FALSE); } --- 378,409 ---- * requirement. This requirement makes sense for dump format * but for 'tar' format, it does not. In provision to the * NDMP-v4 spec, for 'tar' format the intermediate directories * need not to be reported. */ ! syslog(LOG_DEBUG, "p(%lu)", (u_longlong_t)attr->st_ino); return (TRUE); } if (attr->st_mtime > bksp->bs_ldate) { ! syslog(LOG_DEBUG, "m(%lu): %lu > %lu", (uint_t)attr->st_ino, (uint_t)attr->st_mtime, (uint_t)bksp->bs_ldate); return (TRUE); } if (attr->st_ctime > bksp->bs_ldate) { if (NLP_IGNCTIME(nlp)) { ! syslog(LOG_DEBUG, "ign c(%lu): %lu > %lu", (uint_t)attr->st_ino, (uint_t)attr->st_ctime, (uint_t)bksp->bs_ldate); return (FALSE); } ! syslog(LOG_DEBUG, "c(%lu): %lu > %lu", (uint_t)attr->st_ino, (uint_t)attr->st_ctime, (uint_t)bksp->bs_ldate); return (TRUE); } ! syslog(LOG_DEBUG, "mc(%lu): (%lu,%lu) < %lu", (uint_t)attr->st_ino, (uint_t)attr->st_mtime, (uint_t)attr->st_ctime, (uint_t)bksp->bs_ldate); return (FALSE); }
*** 440,456 **** acl_t *aclp = NULL; char *acltp; erc = lstat64(name, &tlm_acls->acl_attr); if (erc != 0) { ! NDMP_LOG(LOG_ERR, "Could not find file %s.", name); erc = TLM_NO_SOURCE_FILE; return (erc); } erc = acl_get(name, ACL_NO_TRIVIAL, &aclp); if (erc != 0) { ! NDMP_LOG(LOG_DEBUG, "Could not read ACL for file [%s]", name); erc = TLM_NO_SOURCE_FILE; return (erc); } if (aclp && (acltp = acl_totext(aclp, --- 420,436 ---- acl_t *aclp = NULL; char *acltp; erc = lstat64(name, &tlm_acls->acl_attr); if (erc != 0) { ! syslog(LOG_ERR, "Could not find file %s.", name); erc = TLM_NO_SOURCE_FILE; return (erc); } erc = acl_get(name, ACL_NO_TRIVIAL, &aclp); if (erc != 0) { ! syslog(LOG_DEBUG, "Could not read ACL for file [%s]", name); erc = TLM_NO_SOURCE_FILE; return (erc); } if (aclp && (acltp = acl_totext(aclp,
*** 487,497 **** js->js_job_name); else fil = dir; erc = lstat64(fil, &tlm_acls->acl_attr); if (erc != 0) { ! NDMP_LOG(LOG_ERR, "Could not find directory %s.", dir); free(checkpointed_dir); return (-1); } spot = strchr(&fil[1], '/'); --- 467,477 ---- js->js_job_name); else fil = dir; erc = lstat64(fil, &tlm_acls->acl_attr); if (erc != 0) { ! syslog(LOG_ERR, "Could not find directory %s.", dir); free(checkpointed_dir); return (-1); } spot = strchr(&fil[1], '/');
*** 505,525 **** if (strcmp(root_dir, tlm_acls->acl_root_dir) != 0) { struct stat64 attr; erc = lstat64(root_dir, &attr); if (erc != 0) { ! NDMP_LOG(LOG_ERR, "Cannot find root directory %s.", root_dir); free(checkpointed_dir); return (-1); } (void) strlcpy(tlm_acls->acl_root_dir, root_dir, TLM_VOLNAME_MAX_LENGTH); } erc = acl_get(fil, ACL_NO_TRIVIAL, &aclp); if (erc != 0) { ! NDMP_LOG(LOG_DEBUG, "Could not read metadata for directory [%s]", dir); free(checkpointed_dir); return (-1); } if (aclp && (acltp = acl_totext(aclp, --- 485,505 ---- if (strcmp(root_dir, tlm_acls->acl_root_dir) != 0) { struct stat64 attr; erc = lstat64(root_dir, &attr); if (erc != 0) { ! syslog(LOG_ERR, "Cannot find root directory %s.", root_dir); free(checkpointed_dir); return (-1); } (void) strlcpy(tlm_acls->acl_root_dir, root_dir, TLM_VOLNAME_MAX_LENGTH); } erc = acl_get(fil, ACL_NO_TRIVIAL, &aclp); if (erc != 0) { ! syslog(LOG_DEBUG, "Could not read metadata for directory [%s]", dir); free(checkpointed_dir); return (-1); } if (aclp && (acltp = acl_totext(aclp,
*** 544,566 **** tlm_cmd_t *local_commands, tlm_job_stats_t *job_stats, bk_selector_t *bksp) { int erc; - NDMP_LOG(LOG_DEBUG, "\"%s\"", dir); - erc = get_dir_acl_info(dir, tlm_acls, job_stats); if (erc != 0) { ! NDMP_LOG(LOG_DEBUG, "Could not read directory info for %s", dir); job_stats->js_errors++; } else { /* * See if the directory must be backed up. */ if (bksp && !(*bksp->bs_fn)(bksp, &tlm_acls->acl_attr)) { ! NDMP_LOG(LOG_DEBUG, "[%s] dir skipped", dir); return (erc); } if (tm_tar_ops.tm_putdir != NULL) (void) (tm_tar_ops.tm_putdir)(dir, tlm_acls, --- 524,544 ---- tlm_cmd_t *local_commands, tlm_job_stats_t *job_stats, bk_selector_t *bksp) { int erc; erc = get_dir_acl_info(dir, tlm_acls, job_stats); if (erc != 0) { ! syslog(LOG_ERR, "Could not read directory info for %s", dir); job_stats->js_errors++; } else { /* * See if the directory must be backed up. */ if (bksp && !(*bksp->bs_fn)(bksp, &tlm_acls->acl_attr)) { ! syslog(LOG_DEBUG, "[%s] dir skipped", dir); return (erc); } if (tm_tar_ops.tm_putdir != NULL) (void) (tm_tar_ops.tm_putdir)(dir, tlm_acls,
*** 582,595 **** tlm_job_stats_t *job_stats, bk_selector_t *bksp) { int erc; char buf[TLM_MAX_PATH_NAME]; ! longlong_t rv; - NDMP_LOG(LOG_DEBUG, "\"%s/%s\"", dir, name); - (void) strlcpy(buf, dir, sizeof (buf)); (void) strlcat(buf, "/", sizeof (buf)); (void) strlcat(buf, name, sizeof (buf)); /* --- 560,571 ---- tlm_job_stats_t *job_stats, bk_selector_t *bksp) { int erc; char buf[TLM_MAX_PATH_NAME]; ! longlong_t rv = -1; (void) strlcpy(buf, dir, sizeof (buf)); (void) strlcat(buf, "/", sizeof (buf)); (void) strlcat(buf, name, sizeof (buf)); /*
*** 597,624 **** * This is not efficient when the attributes and file handle of * the file is already known. */ erc = get_acl_info(buf, tlm_acls); if (erc != TLM_NO_ERRORS) { ! NDMP_LOG(LOG_ERR, "Could not open file %s/%s.", dir, name); return (-ENOENT); } /* Should the file be backed up? */ if (!bksp) { ! NDMP_LOG(LOG_DEBUG, "[%s/%s] has no selection criteria", dir, name); } else if (!((*bksp->bs_fn)(bksp, &tlm_acls->acl_attr))) { ! NDMP_LOG(LOG_DEBUG, "[%s/%s] file skipped", dir, name); return (0); } /* Only the regular files and symbolic links can be backed up. */ if (!S_ISLNK(tlm_acls->acl_attr.st_mode) && !S_ISREG(tlm_acls->acl_attr.st_mode)) { ! NDMP_LOG(LOG_DEBUG, "Warning: skip backing up [%s][%s]", dir, name); return (-EINVAL); } --- 573,600 ---- * This is not efficient when the attributes and file handle of * the file is already known. */ erc = get_acl_info(buf, tlm_acls); if (erc != TLM_NO_ERRORS) { ! syslog(LOG_ERR, "Could not open file %s/%s.", dir, name); return (-ENOENT); } /* Should the file be backed up? */ if (!bksp) { ! syslog(LOG_DEBUG, "[%s/%s] has no selection criteria", dir, name); } else if (!((*bksp->bs_fn)(bksp, &tlm_acls->acl_attr))) { ! syslog(LOG_DEBUG, "[%s/%s] file skipped", dir, name); return (0); } /* Only the regular files and symbolic links can be backed up. */ if (!S_ISLNK(tlm_acls->acl_attr.st_mode) && !S_ISREG(tlm_acls->acl_attr.st_mode)) { ! syslog(LOG_DEBUG, "Warning: skip backing up [%s][%s]", dir, name); return (-EINVAL); }
*** 656,666 **** longlong_t fsize; bk_selector_t bks; tlm_cmd_t *local_commands; long dpos; ! NDMP_LOG(LOG_DEBUG, "nr_chkpnted %d nr_ldate: %u bk_path: \"%s\"", NLP_ISCHKPNTED(nlp), nlp->nlp_ldate, bk_path); /* Get every name in this directory */ dname = ndmp_malloc(TLM_MAX_PATH_NAME); if (dname == NULL) --- 632,642 ---- longlong_t fsize; bk_selector_t bks; tlm_cmd_t *local_commands; long dpos; ! syslog(LOG_DEBUG, "nr_chkpnted %d nr_ldate: %u bk_path: \"%s\"", NLP_ISCHKPNTED(nlp), nlp->nlp_ldate, bk_path); /* Get every name in this directory */ dname = ndmp_malloc(TLM_MAX_PATH_NAME); if (dname == NULL)
*** 676,686 **** /* * should we skip the whole thing? */ if (tlm_is_excluded("", bk_path, np->nr_excls)) { ! NDMP_LOG(LOG_DEBUG, "%s excluded", bk_path); free(dname); return (0); } /* --- 652,662 ---- /* * should we skip the whole thing? */ if (tlm_is_excluded("", bk_path, np->nr_excls)) { ! syslog(LOG_DEBUG, "%s excluded", bk_path); free(dname); return (0); } /*
*** 695,712 **** } (void) memset(&ret_fh, 0, sizeof (ret_fh)); erc = fs_getstat(first_name, &ret_fh, &ret_attr); if (erc != 0) { ! NDMP_LOG(LOG_ERR, "Path %s not found.", first_name); free(dname); return (-EINVAL); } if ((stk = cstack_new()) == NULL) { free(dname); ! NDMP_LOG(LOG_DEBUG, "cstack_new failed"); return (-ENOMEM); } (void) strlcpy(dir_info.fd_dir_name, first_name, TLM_MAX_PATH_NAME); (void) memcpy(&dir_info.fd_dir_fh, &ret_fh, sizeof (fs_fhandle_t)); p_dir_info = dup_dir_info(&dir_info); --- 671,688 ---- } (void) memset(&ret_fh, 0, sizeof (ret_fh)); erc = fs_getstat(first_name, &ret_fh, &ret_attr); if (erc != 0) { ! syslog(LOG_ERR, "Path %s not found.", first_name); free(dname); return (-EINVAL); } if ((stk = cstack_new()) == NULL) { free(dname); ! syslog(LOG_DEBUG, "cstack_new failed"); return (-ENOMEM); } (void) strlcpy(dir_info.fd_dir_name, first_name, TLM_MAX_PATH_NAME); (void) memcpy(&dir_info.fd_dir_fh, &ret_fh, sizeof (fs_fhandle_t)); p_dir_info = dup_dir_info(&dir_info);
*** 717,727 **** */ if (cstack_push(stk, p_dir_info, 0)) { free(dname); free(p_dir_info); cstack_delete(stk); ! NDMP_LOG(LOG_DEBUG, "cstack_push failed"); return (-ENOMEM); } (void) memset(&tlm_acls, 0, sizeof (tlm_acls)); /* --- 693,703 ---- */ if (cstack_push(stk, p_dir_info, 0)) { free(dname); free(p_dir_info); cstack_delete(stk); ! syslog(LOG_DEBUG, "cstack_push failed"); return (-ENOMEM); } (void) memset(&tlm_acls, 0, sizeof (tlm_acls)); /*
*** 737,747 **** /* * This is level-backup. It never resets the archive bit. */ tlm_acls.acl_clear_archive = FALSE; ! NDMP_LOG(LOG_DEBUG, "acls.chkpnt: %c acls.clear_arcbit: %c", NDMP_YORN(tlm_acls.acl_checkpointed), NDMP_YORN(tlm_acls.acl_clear_archive)); while (commands->tcs_reader == TLM_BACKUP_RUN && local_commands->tc_reader == TLM_BACKUP_RUN && --- 713,723 ---- /* * This is level-backup. It never resets the archive bit. */ tlm_acls.acl_clear_archive = FALSE; ! syslog(LOG_DEBUG, "acls.chkpnt: %c acls.clear_arcbit: %c", NDMP_YORN(tlm_acls.acl_checkpointed), NDMP_YORN(tlm_acls.acl_clear_archive)); while (commands->tcs_reader == TLM_BACKUP_RUN && local_commands->tc_reader == TLM_BACKUP_RUN &&
*** 761,781 **** while (commands->tcs_reader == TLM_BACKUP_RUN && local_commands->tc_reader == TLM_BACKUP_RUN) { dname_size = TLM_MAX_PATH_NAME - 1; ! NDMP_LOG(LOG_DEBUG, "dir_name: %s", p_dir_info->fd_dir_name); (void) memset(&ret_fh, 0, sizeof (ret_fh)); erc = fs_readdir(&p_dir_info->fd_dir_fh, p_dir_info->fd_dir_name, &dpos, dname, &dname_size, &ret_fh, &ret_attr); if (erc == 0) { fileid = ret_fh.fh_fid; } else { ! NDMP_LOG(LOG_DEBUG, "Filesystem readdir in [%s]", p_dir_info->fd_dir_name); retval = -ENOENT; break; } --- 737,757 ---- while (commands->tcs_reader == TLM_BACKUP_RUN && local_commands->tc_reader == TLM_BACKUP_RUN) { dname_size = TLM_MAX_PATH_NAME - 1; ! syslog(LOG_DEBUG, "dir_name: %s", p_dir_info->fd_dir_name); (void) memset(&ret_fh, 0, sizeof (ret_fh)); erc = fs_readdir(&p_dir_info->fd_dir_fh, p_dir_info->fd_dir_name, &dpos, dname, &dname_size, &ret_fh, &ret_attr); if (erc == 0) { fileid = ret_fh.fh_fid; } else { ! syslog(LOG_DEBUG, "Filesystem readdir in [%s]", p_dir_info->fd_dir_name); retval = -ENOENT; break; }
*** 783,794 **** /* an empty name size marks the end of the list */ if (dname_size == 0) break; dname[dname_size] = '\0'; - NDMP_LOG(LOG_DEBUG, "dname: \"%s\"", dname); - /* * If name refers to a directory, push its file * handle onto the stack (skip "." and ".."). */ if (rootfs_dot_or_dotdot(dname)) { --- 759,768 ----
*** 802,812 **** * Or * dir-type entries which have have nothing under * their hierarchy to be backed up. */ if (!dbm_getone(nlp->nlp_bkmap, (u_longlong_t)fileid)) { ! NDMP_LOG(LOG_DEBUG, "Skipping %s/%s", p_dir_info->fd_dir_name, dname); fileid = 0; continue; } --- 776,786 ---- * Or * dir-type entries which have have nothing under * their hierarchy to be backed up. */ if (!dbm_getone(nlp->nlp_bkmap, (u_longlong_t)fileid)) { ! syslog(LOG_DEBUG, "Skipping %s/%s", p_dir_info->fd_dir_name, dname); fileid = 0; continue; }
*** 821,836 **** * so we do not have to test for regular files. */ t_dir_info = tlm_new_dir_info(&ret_fh, p_dir_info->fd_dir_name, dname); if (t_dir_info == NULL) { ! NDMP_LOG(LOG_DEBUG, "While backing up [%s][%s]", p_dir_info->fd_dir_name, dname); } else if (cstack_push(stk, t_dir_info, 0) != 0) { ! NDMP_LOG(LOG_DEBUG, "No enough memory stack_push"); retval = -ENOMEM; break; } } else if (S_ISREG(ret_attr.st_mode) || --- 795,810 ---- * so we do not have to test for regular files. */ t_dir_info = tlm_new_dir_info(&ret_fh, p_dir_info->fd_dir_name, dname); if (t_dir_info == NULL) { ! syslog(LOG_DEBUG, "While backing up [%s][%s]", p_dir_info->fd_dir_name, dname); } else if (cstack_push(stk, t_dir_info, 0) != 0) { ! syslog(LOG_DEBUG, "No enough memory stack_push"); retval = -ENOMEM; break; } } else if (S_ISREG(ret_attr.st_mode) ||
*** 916,926 **** int retval; ndmp_run_args_t np; tlm_job_stats_t *job_stats; tlm_cmd_t *local_commands; ! NDMP_LOG(LOG_DEBUG, "bk_path: \"%s\"", nlp->nlp_backup_path); local_commands = commands->tcs_command; (void) memset(&np, 0, sizeof (np)); if (!malloc_paths(&np)) return (-1); --- 890,900 ---- int retval; ndmp_run_args_t np; tlm_job_stats_t *job_stats; tlm_cmd_t *local_commands; ! syslog(LOG_DEBUG, "bk_path: \"%s\"", nlp->nlp_backup_path); local_commands = commands->tcs_command; (void) memset(&np, 0, sizeof (np)); if (!malloc_paths(&np)) return (-1);
*** 960,976 **** tlm_buffers_t *bufs; tlm_cmd_t *lcmd; /* Local command */ err = 0; if (session == NULL) { - NDMP_LOG(LOG_DEBUG, "session == NULL"); err = -1; } else if (mod_params == NULL) { - NDMP_LOG(LOG_DEBUG, "mod_params == NULL"); err = -1; } else if (cmds == NULL) { - NDMP_LOG(LOG_DEBUG, "cmds == NULL"); err = -1; } if (err != 0) return (err); --- 934,947 ----
*** 984,998 **** nw = 0; buf = tlm_buffer_out_buf(bufs, &bidx); while (cmds->tcs_writer != (int)TLM_ABORT && lcmd->tc_writer != (int)TLM_ABORT) { if (buf->tb_full) { - NDMP_LOG(LOG_DEBUG, "w%d", bidx); - if (MOD_WRITE(mod_params, buf->tb_buffer_data, buf->tb_buffer_size) != 0) { ! NDMP_LOG(LOG_DEBUG, "Writing buffer %d, pos: %lld", bidx, session->ns_mover.md_position); err = -1; break; } --- 955,967 ---- nw = 0; buf = tlm_buffer_out_buf(bufs, &bidx); while (cmds->tcs_writer != (int)TLM_ABORT && lcmd->tc_writer != (int)TLM_ABORT) { if (buf->tb_full) { if (MOD_WRITE(mod_params, buf->tb_buffer_data, buf->tb_buffer_size) != 0) { ! syslog(LOG_DEBUG, "Writing buffer %d, pos: %lld", bidx, session->ns_mover.md_position); err = -1; break; }
*** 1003,1034 **** tlm_buffer_release_out_buf(bufs); nw++; } else { if (lcmd->tc_writer != TLM_BACKUP_RUN) { /* No more data is comming; time to exit. */ - NDMP_LOG(LOG_DEBUG, - "tc_writer!=TLM_BACKUP_RUN; time to exit"); break; } else { - NDMP_LOG(LOG_DEBUG, "W%d", bidx); tlm_buffer_in_buf_timed_wait(bufs, 100); } } } - NDMP_LOG(LOG_DEBUG, "nw: %d", nw); - if (cmds->tcs_writer != (int)TLM_ABORT) { - NDMP_LOG(LOG_DEBUG, "tcs_writer != TLM_ABORT"); - } else { - NDMP_LOG(LOG_DEBUG, "tcs_writer == TLM_ABORT"); - } - - if (lcmd->tc_writer != (int)TLM_ABORT) { - NDMP_LOG(LOG_DEBUG, "tc_writer != TLM_ABORT"); - } else { - NDMP_LOG(LOG_DEBUG, "tc_writer == TLM_ABORT"); - } cmds->tcs_writer_count--; lcmd->tc_reader = TLM_STOP; lcmd->tc_ref--; return (err); --- 972,988 ----
*** 1086,1099 **** mod_params = argp->tr_mod_params; cmds = argp->tr_cmds; err = 0; if (session == NULL) { - NDMP_LOG(LOG_DEBUG, "session == NULL"); err = -1; } else if (cmds == NULL) { - NDMP_LOG(LOG_DEBUG, "cmds == NULL"); err = -1; } if (err != 0) { tlm_cmd_signal(cmds->tcs_command, TLM_TAR_READER); --- 1040,1051 ----
*** 1114,1144 **** buf = tlm_buffer_in_buf(bufs, &bidx); while (cmds->tcs_reader == TLM_RESTORE_RUN && lcmd->tc_reader == TLM_RESTORE_RUN) { if (buf->tb_full) { - NDMP_LOG(LOG_DEBUG, "R%d", bidx); /* * The buffer is still full, wait for the consumer * thread to use it. */ tlm_buffer_out_buf_timed_wait(bufs, 100); buf = tlm_buffer_in_buf(bufs, NULL); } else { - NDMP_LOG(LOG_DEBUG, "r%d", bidx); - err = read_one_buf(mod_params, bufs, buf); if (err < 0) { ! NDMP_LOG(LOG_DEBUG, "Reading buffer %d, pos: %lld", bidx, session->ns_mover.md_position); /* Force the writer to stop. */ buf->tb_eot = buf->tb_eof = TRUE; break; } else if (err == 1) { ! NDMP_LOG(LOG_DEBUG, "operation aborted or session terminated"); err = 0; break; } --- 1066,1093 ---- buf = tlm_buffer_in_buf(bufs, &bidx); while (cmds->tcs_reader == TLM_RESTORE_RUN && lcmd->tc_reader == TLM_RESTORE_RUN) { if (buf->tb_full) { /* * The buffer is still full, wait for the consumer * thread to use it. */ tlm_buffer_out_buf_timed_wait(bufs, 100); buf = tlm_buffer_in_buf(bufs, NULL); } else { err = read_one_buf(mod_params, bufs, buf); if (err < 0) { ! syslog(LOG_DEBUG, "Reading buffer %d, pos: %lld", bidx, session->ns_mover.md_position); /* Force the writer to stop. */ buf->tb_eot = buf->tb_eof = TRUE; break; } else if (err == 1) { ! syslog(LOG_DEBUG, "operation aborted or session terminated"); err = 0; break; }
*** 1177,1187 **** char jname[TLM_MAX_BACKUP_JOB_NAME]; int err; tlm_commands_t *cmds; if (mod_params->mp_operation != NDMP_DATA_OP_BACKUP) { ! NDMP_LOG(LOG_DEBUG, "mod_params->mp_operation != NDMP_DATA_OP_BACKUP"); err = -1; } else { if (ndmpd_mark_inodes_v2(session, nlp) != 0) err = -1; --- 1126,1136 ---- char jname[TLM_MAX_BACKUP_JOB_NAME]; int err; tlm_commands_t *cmds; if (mod_params->mp_operation != NDMP_DATA_OP_BACKUP) { ! syslog(LOG_DEBUG, "mod_params->mp_operation != NDMP_DATA_OP_BACKUP"); err = -1; } else { if (ndmpd_mark_inodes_v2(session, nlp) != 0) err = -1;
*** 1192,1205 **** } if (err != 0) return (err); ! (void) ndmp_new_job_name(jname); ! if (backup_create_structs(session, jname) < 0) return (-1); ! nlp->nlp_jstat->js_start_ltime = time(NULL); nlp->nlp_jstat->js_start_time = nlp->nlp_jstat->js_start_ltime; nlp->nlp_jstat->js_chkpnt_time = nlp->nlp_cdate; if (!session->ns_data.dd_abort) { --- 1141,1156 ---- } if (err != 0) return (err); ! if (ndmp_new_job_name(jname, sizeof (jname)) <= 0) { return (-1); ! } ! if (backup_create_structs(session, jname) < 0) { ! return (-1); ! } nlp->nlp_jstat->js_start_ltime = time(NULL); nlp->nlp_jstat->js_start_time = nlp->nlp_jstat->js_start_ltime; nlp->nlp_jstat->js_chkpnt_time = nlp->nlp_cdate; if (!session->ns_data.dd_abort) {
*** 1212,1258 **** if (ndmp_write_utf8magic(cmds->tcs_command) < 0) { backup_release_structs(session); return (-1); } ! NDMP_LOG(LOG_DEBUG, "Backing up \"%s\" started.", nlp->nlp_backup_path); err = ndmp_backup_reader(cmds, nlp, jname); if (err != 0) { backup_release_structs(session); ! NDMP_LOG(LOG_DEBUG, "Launch ndmp_backup_reader: %s", strerror(err)); return (-1); } /* Act as the writer thread. */ err = ndmp_tar_writer(session, mod_params, cmds); nlp->nlp_jstat->js_stop_time = time(NULL); ! NDMP_LOG(LOG_DEBUG, ! "Runtime [%s] %llu bytes (%llu): %d seconds", nlp->nlp_backup_path, session->ns_mover.md_data_written, session->ns_mover.md_data_written, nlp->nlp_jstat->js_stop_time - nlp->nlp_jstat->js_start_ltime); MOD_LOG(mod_params, ! "Runtime [%s] %llu bytes (%llu): %d seconds", nlp->nlp_backup_path, session->ns_mover.md_data_written, session->ns_mover.md_data_written, nlp->nlp_jstat->js_stop_time - nlp->nlp_jstat->js_start_ltime); if (session->ns_data.dd_abort) err = -1; ! NDMP_LOG(LOG_DEBUG, "Backing up \"%s\" finished. (%d)", nlp->nlp_backup_path, err); } else { nlp->nlp_jstat->js_stop_time = time(NULL); ! NDMP_LOG(LOG_DEBUG, "Backing up \"%s\" aborted.", nlp->nlp_backup_path); err = 0; } backup_release_structs(session); --- 1163,1209 ---- if (ndmp_write_utf8magic(cmds->tcs_command) < 0) { backup_release_structs(session); return (-1); } ! syslog(LOG_DEBUG, "Backing up \"%s\" started.", nlp->nlp_backup_path); err = ndmp_backup_reader(cmds, nlp, jname); if (err != 0) { backup_release_structs(session); ! syslog(LOG_DEBUG, "Launch ndmp_backup_reader: %s", strerror(err)); return (-1); } /* Act as the writer thread. */ err = ndmp_tar_writer(session, mod_params, cmds); nlp->nlp_jstat->js_stop_time = time(NULL); ! syslog(LOG_DEBUG, ! "Runtime [%s] %lu bytes (%llu): %d seconds", nlp->nlp_backup_path, session->ns_mover.md_data_written, session->ns_mover.md_data_written, nlp->nlp_jstat->js_stop_time - nlp->nlp_jstat->js_start_ltime); MOD_LOG(mod_params, ! "Runtime [%s] %lu bytes (%lu): %d seconds", nlp->nlp_backup_path, session->ns_mover.md_data_written, session->ns_mover.md_data_written, nlp->nlp_jstat->js_stop_time - nlp->nlp_jstat->js_start_ltime); if (session->ns_data.dd_abort) err = -1; ! syslog(LOG_DEBUG, "Backing up \"%s\" finished. (%d)", nlp->nlp_backup_path, err); } else { nlp->nlp_jstat->js_stop_time = time(NULL); ! syslog(LOG_DEBUG, "Backing up \"%s\" aborted.", nlp->nlp_backup_path); err = 0; } backup_release_structs(session);
*** 1279,1290 **** ndmp_name *ent; pthread_t rdtp, wrtp; int i; if (mod_params->mp_operation != NDMP_DATA_OP_RECOVER) { - NDMP_LOG(LOG_DEBUG, - "mod_params->mp_operation != NDMP_DATA_OP_RECOVER"); return (-1); } if (nlp->nlp_restore_path[0] != '\0') rspath = nlp->nlp_restore_path; --- 1230,1239 ----
*** 1291,1303 **** else if (nlp->nlp_restore_bk_path[0] != '\0') rspath = nlp->nlp_restore_bk_path; else rspath = ""; ! (void) ndmp_new_job_name(jname); ! if (restore_create_structs(session, jname) < 0) return (-1); nlp->nlp_jstat->js_start_ltime = time(NULL); nlp->nlp_jstat->js_start_time = time(NULL); if (!session->ns_data.dd_abort) { --- 1240,1255 ---- else if (nlp->nlp_restore_bk_path[0] != '\0') rspath = nlp->nlp_restore_bk_path; else rspath = ""; ! if (ndmp_new_job_name(jname, sizeof (jname)) <= 0) { return (-1); + } + if (restore_create_structs(session, jname) < 0) { + return (-1); + } nlp->nlp_jstat->js_start_ltime = time(NULL); nlp->nlp_jstat->js_start_time = time(NULL); if (!session->ns_data.dd_abort) {
*** 1304,1315 **** cmds = &nlp->nlp_cmds; cmds->tcs_reader = cmds->tcs_writer = TLM_RESTORE_RUN; cmds->tcs_command->tc_reader = TLM_RESTORE_RUN; cmds->tcs_command->tc_writer = TLM_RESTORE_RUN; ! NDMP_LOG(LOG_DEBUG, "Restoring to \"%s\" started.", rspath); ! NDMP_LOG(LOG_DEBUG, "Restoring from %s tape(s).", ndmp_data_get_mover_mode(session)); arg.tr_session = session; arg.tr_mod_params = mod_params; arg.tr_cmds = cmds; --- 1256,1267 ---- cmds = &nlp->nlp_cmds; cmds->tcs_reader = cmds->tcs_writer = TLM_RESTORE_RUN; cmds->tcs_command->tc_reader = TLM_RESTORE_RUN; cmds->tcs_command->tc_writer = TLM_RESTORE_RUN; ! syslog(LOG_DEBUG, "Restoring to \"%s\" started.", rspath); ! syslog(LOG_DEBUG, "Restoring from %s tape(s).", ndmp_data_get_mover_mode(session)); arg.tr_session = session; arg.tr_mod_params = mod_params; arg.tr_cmds = cmds;
*** 1317,1334 **** err = pthread_create(&rdtp, NULL, (funct_t)ndmp_tar_reader, (void *)&arg); if (err == 0) { tlm_cmd_wait(cmds->tcs_command, TLM_TAR_READER); } else { ! NDMP_LOG(LOG_DEBUG, "Launch ndmp_tar_reader: %m"); return (-1); } if (!ndmp_check_utf8magic(cmds->tcs_command)) { ! NDMP_LOG(LOG_DEBUG, "UTF8Magic not found!"); } else { ! NDMP_LOG(LOG_DEBUG, "UTF8Magic found"); } (void) memset(&tlm_arg, 0, sizeof (tlm_backup_restore_arg_t)); (void) pthread_barrier_init(&tlm_arg.ba_barrier, 0, 2); --- 1269,1286 ---- err = pthread_create(&rdtp, NULL, (funct_t)ndmp_tar_reader, (void *)&arg); if (err == 0) { tlm_cmd_wait(cmds->tcs_command, TLM_TAR_READER); } else { ! syslog(LOG_DEBUG, "Launch ndmp_tar_reader: %m"); return (-1); } if (!ndmp_check_utf8magic(cmds->tcs_command)) { ! syslog(LOG_DEBUG, "UTF8Magic not found!"); } else { ! syslog(LOG_DEBUG, "UTF8Magic found"); } (void) memset(&tlm_arg, 0, sizeof (tlm_backup_restore_arg_t)); (void) pthread_barrier_init(&tlm_arg.ba_barrier, 0, 2);
*** 1339,1366 **** tlm_arg.ba_cmd = cmds->tcs_command; tlm_arg.ba_job = nlp->nlp_jstat->js_job_name; tlm_arg.ba_dir = nlp->nlp_restore_path; for (i = 0; i < nlp->nlp_nfiles; i++) { ent = (ndmp_name *)MOD_GETNAME(mod_params, i); ! tlm_arg.ba_sels[i] = ent->name; } - if (tm_tar_ops.tm_getfile != NULL) { err = pthread_create(&wrtp, NULL, (funct_t)tm_tar_ops.tm_getfile, (void *)&tlm_arg); } else { (void) pthread_barrier_destroy(&tlm_arg.ba_barrier); ! NDMP_LOG(LOG_DEBUG, "Thread create tm_getfile: ops NULL"); return (-1); } if (err == 0) { (void) pthread_barrier_wait(&tlm_arg.ba_barrier); } else { (void) pthread_barrier_destroy(&tlm_arg.ba_barrier); ! NDMP_LOG(LOG_DEBUG, "thread create tm_getfile: %m"); return (-1); } (void) pthread_join(rdtp, NULL); (void) pthread_join(wrtp, NULL); --- 1291,1318 ---- tlm_arg.ba_cmd = cmds->tcs_command; tlm_arg.ba_job = nlp->nlp_jstat->js_job_name; tlm_arg.ba_dir = nlp->nlp_restore_path; for (i = 0; i < nlp->nlp_nfiles; i++) { ent = (ndmp_name *)MOD_GETNAME(mod_params, i); ! tlm_arg.ba_sels[i] = strdup(ent->name); } + tlm_arg.ba_count = i; if (tm_tar_ops.tm_getfile != NULL) { err = pthread_create(&wrtp, NULL, (funct_t)tm_tar_ops.tm_getfile, (void *)&tlm_arg); } else { (void) pthread_barrier_destroy(&tlm_arg.ba_barrier); ! syslog(LOG_DEBUG, "Thread create tm_getfile: ops NULL"); return (-1); } if (err == 0) { (void) pthread_barrier_wait(&tlm_arg.ba_barrier); } else { (void) pthread_barrier_destroy(&tlm_arg.ba_barrier); ! syslog(LOG_DEBUG, "thread create tm_getfile: %m"); return (-1); } (void) pthread_join(rdtp, NULL); (void) pthread_join(wrtp, NULL);
*** 1372,1389 **** (void) send_unrecovered_list(mod_params, nlp); ndmp_stop_local_reader(session, cmds); ndmp_wait_for_reader(cmds); ndmp_stop_remote_reader(session); ! NDMP_LOG(LOG_DEBUG, "Restoring to \"%s\" finished. (%d)", rspath, err); } else { nlp->nlp_jstat->js_stop_time = time(NULL); /* nothing restored. */ (void) send_unrecovered_list(mod_params, nlp); ! NDMP_LOG(LOG_DEBUG, "Restoring to \"%s\" aborted.", rspath); err = -1; } NDMP_FREE(nlp->nlp_restore_path); --- 1324,1341 ---- (void) send_unrecovered_list(mod_params, nlp); ndmp_stop_local_reader(session, cmds); ndmp_wait_for_reader(cmds); ndmp_stop_remote_reader(session); ! syslog(LOG_DEBUG, "Restoring to \"%s\" finished. (%d)", rspath, err); } else { nlp->nlp_jstat->js_stop_time = time(NULL); /* nothing restored. */ (void) send_unrecovered_list(mod_params, nlp); ! syslog(LOG_DEBUG, "Restoring to \"%s\" aborted.", rspath); err = -1; } NDMP_FREE(nlp->nlp_restore_path);
*** 1504,1516 **** rv = 0; /* Append the backup path to all the "ent[].name"s. */ for (i = 0; i < n; i++) { ent = (ndmp_name *)MOD_GETNAME(params, i); ! NDMP_LOG(LOG_DEBUG, "Old: ent[%d].name: \"%s\"", i, ent->name); ! NDMP_LOG(LOG_DEBUG, "Old: ent[%d].dest: \"%s\"", i, ent->dest); /* remove trailing slash */ len = strlen(ent->name); if (ent->name[len - 1] == '/') --- 1456,1468 ---- rv = 0; /* Append the backup path to all the "ent[].name"s. */ for (i = 0; i < n; i++) { ent = (ndmp_name *)MOD_GETNAME(params, i); ! syslog(LOG_DEBUG, "Old: ent[%d].name: \"%s\"", i, ent->name); ! syslog(LOG_DEBUG, "Old: ent[%d].dest: \"%s\"", i, ent->dest); /* remove trailing slash */ len = strlen(ent->name); if (ent->name[len - 1] == '/')
*** 1530,1540 **** break; } free(ent->name); ent->name = cp; ! NDMP_LOG(LOG_DEBUG, "New: ent[%d].name: \"%s\"", i, ent->name); } free(pathname); return (rv); --- 1482,1492 ---- break; } free(ent->name); ent->name = cp; ! syslog(LOG_DEBUG, "New: ent[%d].name: \"%s\"", i, ent->name); } free(pathname); return (rv);
*** 1553,1572 **** int i, rv; ndmp_name *ent; rv = 0; if (rspath != NULL && *rspath != '\0') { ! NDMP_LOG(LOG_DEBUG, "rspath: \"%s\"", rspath); if (!fs_volexist(rspath)) { MOD_LOG(params, "Error: Invalid volume name for restore."); rv = -1; } } else { for (i = 0; i < n; i++) { ent = (ndmp_name *)MOD_GETNAME(params, i); ! NDMP_LOG(LOG_DEBUG, "ent[%d].name: \"%s\"", i, ent->name); if (!fs_volexist(ent->name)) { MOD_LOG(params, "Error: Invalid volume name for restore.", --- 1505,1524 ---- int i, rv; ndmp_name *ent; rv = 0; if (rspath != NULL && *rspath != '\0') { ! syslog(LOG_DEBUG, "rspath: \"%s\"", rspath); if (!fs_volexist(rspath)) { MOD_LOG(params, "Error: Invalid volume name for restore."); rv = -1; } } else { for (i = 0; i < n; i++) { ent = (ndmp_name *)MOD_GETNAME(params, i); ! syslog(LOG_DEBUG, "ent[%d].name: \"%s\"", i, ent->name); if (!fs_volexist(ent->name)) { MOD_LOG(params, "Error: Invalid volume name for restore.",
*** 1639,1669 **** nlp->nlp_backup_path)) != NDMP_NO_ERR) return (rv); /* Should the st_ctime be ignored when backing up? */ if (ndmp_ignore_ctime) { ! NDMP_LOG(LOG_DEBUG, "ignoring st_ctime"); NLP_SET(nlp, NLPF_IGNCTIME); } else NLP_UNSET(nlp, NLPF_IGNCTIME); /* Should the st_lmtime be ignored when backing up? */ if (ndmp_include_lmtime) { ! NDMP_LOG(LOG_DEBUG, "including st_lmtime"); NLP_SET(nlp, NLPF_INCLMTIME); } else NLP_UNSET(nlp, NLPF_INCLMTIME); ! NDMP_LOG(LOG_DEBUG, "flags %x", nlp->nlp_flags); /* Is backup history requested? */ cp = MOD_GETENV(params, "HIST"); if (cp == NULL) { ! NDMP_LOG(LOG_DEBUG, "env(HIST) not specified"); NLP_UNSET(nlp, NLPF_FH); } else { ! NDMP_LOG(LOG_DEBUG, "env(HIST): \"%s\"", cp); if (strchr("t_ty_y", *cp)) NLP_SET(nlp, NLPF_FH); else NLP_UNSET(nlp, NLPF_FH); --- 1591,1621 ---- nlp->nlp_backup_path)) != NDMP_NO_ERR) return (rv); /* Should the st_ctime be ignored when backing up? */ if (ndmp_ignore_ctime) { ! syslog(LOG_DEBUG, "ignoring st_ctime"); NLP_SET(nlp, NLPF_IGNCTIME); } else NLP_UNSET(nlp, NLPF_IGNCTIME); /* Should the st_lmtime be ignored when backing up? */ if (ndmp_include_lmtime) { ! syslog(LOG_DEBUG, "including st_lmtime"); NLP_SET(nlp, NLPF_INCLMTIME); } else NLP_UNSET(nlp, NLPF_INCLMTIME); ! syslog(LOG_DEBUG, "flags %x", nlp->nlp_flags); /* Is backup history requested? */ cp = MOD_GETENV(params, "HIST"); if (cp == NULL) { ! syslog(LOG_DEBUG, "env(HIST) not specified"); NLP_UNSET(nlp, NLPF_FH); } else { ! syslog(LOG_DEBUG, "env(HIST): \"%s\"", cp); if (strchr("t_ty_y", *cp)) NLP_SET(nlp, NLPF_FH); else NLP_UNSET(nlp, NLPF_FH);
*** 1671,1684 **** nlp->nlp_clevel = 0; /* Is it an incremental backup? */ cp = MOD_GETENV(params, "LEVEL"); if (cp == NULL) { ! NDMP_LOG(LOG_DEBUG, "env(LEVEL) not specified, default to 0"); } else if (*cp < '0' || *cp > '9' || *(cp+1) != '\0') { ! NDMP_LOG(LOG_DEBUG, "Invalid backup level '%s'", cp); return (NDMP_ILLEGAL_ARGS_ERR); } else nlp->nlp_clevel = *cp - '0'; /* Extract last backup time from the dumpdates file */ --- 1623,1636 ---- nlp->nlp_clevel = 0; /* Is it an incremental backup? */ cp = MOD_GETENV(params, "LEVEL"); if (cp == NULL) { ! syslog(LOG_DEBUG, "env(LEVEL) not specified, default to 0"); } else if (*cp < '0' || *cp > '9' || *(cp+1) != '\0') { ! syslog(LOG_DEBUG, "Invalid backup level '%s'", cp); return (NDMP_ILLEGAL_ARGS_ERR); } else nlp->nlp_clevel = *cp - '0'; /* Extract last backup time from the dumpdates file */
*** 1689,1713 **** MOD_LOG(params, "Error: getting dumpdate for %s level %d\n", nlp->nlp_backup_path, nlp->nlp_clevel); return (NDMP_NO_MEM_ERR); } ! NDMP_LOG(LOG_DEBUG, "Date of this level %d on \"%s\": %s", nlp->nlp_clevel, nlp->nlp_backup_path, cctime(&nlp->nlp_cdate)); ! NDMP_LOG(LOG_DEBUG, "Date of last level %d on \"%s\": %s", nlp->nlp_llevel, nlp->nlp_backup_path, cctime(&nlp->nlp_ldate)); /* Should the dumpdate file be updated? */ cp = MOD_GETENV(params, "UPDATE"); if (cp == NULL) { ! NDMP_LOG(LOG_DEBUG, "env(UPDATE) not specified, default to TRUE"); NLP_SET(nlp, NLPF_UPDATE); } else { ! NDMP_LOG(LOG_DEBUG, "env(UPDATE): \"%s\"", cp); if (strchr("t_ty_y", *cp) != NULL) NLP_SET(nlp, NLPF_UPDATE); else NLP_UNSET(nlp, NLPF_UPDATE); } --- 1641,1665 ---- MOD_LOG(params, "Error: getting dumpdate for %s level %d\n", nlp->nlp_backup_path, nlp->nlp_clevel); return (NDMP_NO_MEM_ERR); } ! syslog(LOG_DEBUG, "Date of this level %d on \"%s\": %s", nlp->nlp_clevel, nlp->nlp_backup_path, cctime(&nlp->nlp_cdate)); ! syslog(LOG_DEBUG, "Date of last level %d on \"%s\": %s", nlp->nlp_llevel, nlp->nlp_backup_path, cctime(&nlp->nlp_ldate)); /* Should the dumpdate file be updated? */ cp = MOD_GETENV(params, "UPDATE"); if (cp == NULL) { ! syslog(LOG_DEBUG, "env(UPDATE) not specified, default to TRUE"); NLP_SET(nlp, NLPF_UPDATE); } else { ! syslog(LOG_DEBUG, "env(UPDATE): \"%s\"", cp); if (strchr("t_ty_y", *cp) != NULL) NLP_SET(nlp, NLPF_UPDATE); else NLP_UNSET(nlp, NLPF_UPDATE); }
*** 1770,1780 **** if (strncmp(s, t, tlen) == 0 && s[slen - 1] == '/') rv = TRUE; } } ! NDMP_LOG(LOG_DEBUG, "rv: %d", rv); return (rv); } /* --- 1722,1732 ---- if (strncmp(s, t, tlen) == 0 && s[slen - 1] == '/') rv = TRUE; } } ! syslog(LOG_DEBUG, "rv: %d", rv); return (rv); } /*
*** 1795,1805 **** { char *bkpath, *rspath; ndmp_lbr_params_t *nlp; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } /* Extract directory from where the backup was made. */ if ((bkpath = get_backup_path_v2(params)) == NULL) --- 1747,1756 ----
*** 1809,1819 **** /* The number of the selections. */ if ((nlp->nlp_nfiles = get_nfiles(session, params)) == 0) return (NDMP_ILLEGAL_ARGS_ERR); ! NDMP_LOG(LOG_DEBUG, "nfiles: %d", nlp->nlp_nfiles); if ((rspath = get_restore_dest(params)) == NULL) return (NDMP_ILLEGAL_ARGS_ERR); if (fs_is_rdonly(rspath)) { --- 1760,1770 ---- /* The number of the selections. */ if ((nlp->nlp_nfiles = get_nfiles(session, params)) == 0) return (NDMP_ILLEGAL_ARGS_ERR); ! syslog(LOG_DEBUG, "nfiles: %d", nlp->nlp_nfiles); if ((rspath = get_restore_dest(params)) == NULL) return (NDMP_ILLEGAL_ARGS_ERR); if (fs_is_rdonly(rspath)) {
*** 1876,1905 **** fs_is_rdonly(nlp->nlp_backup_path) || !fs_is_chkpnt_enabled(nlp->nlp_backup_path)) NLP_SET(nlp, NLPF_CHKPNTED_PATH); else { NLP_UNSET(nlp, NLPF_CHKPNTED_PATH); ! if (ndmp_create_snapshot(nlp->nlp_backup_path, ! nlp->nlp_jstat->js_job_name) < 0) { MOD_LOG(mod_params, "Error: creating checkpoint on %s\n", nlp->nlp_backup_path); /* -1 causes halt reason to become internal error. */ err = -1; } } ! NDMP_LOG(LOG_DEBUG, "NLPF_CHKPNTED_PATH: %c", NDMP_YORN(NLP_ISCHKPNTED(nlp))); ! NDMP_LOG(LOG_DEBUG, "err: %d, update %c", err, NDMP_YORN(NLP_SHOULD_UPDATE(nlp))); if (err == 0) { ! err = ndmp_get_cur_bk_time(nlp, &nlp->nlp_cdate, ! nlp->nlp_jstat->js_job_name); if (err != 0) { ! NDMP_LOG(LOG_DEBUG, "err %d", err); } else { log_bk_params_v2(session, mod_params, nlp); err = ndmpd_tar_backup(session, mod_params, nlp); } } --- 1827,1854 ---- fs_is_rdonly(nlp->nlp_backup_path) || !fs_is_chkpnt_enabled(nlp->nlp_backup_path)) NLP_SET(nlp, NLPF_CHKPNTED_PATH); else { NLP_UNSET(nlp, NLPF_CHKPNTED_PATH); ! if (backup_dataset_create(nlp) < 0) { MOD_LOG(mod_params, "Error: creating checkpoint on %s\n", nlp->nlp_backup_path); /* -1 causes halt reason to become internal error. */ err = -1; } } ! syslog(LOG_DEBUG, "NLPF_CHKPNTED_PATH: %c", NDMP_YORN(NLP_ISCHKPNTED(nlp))); ! syslog(LOG_DEBUG, "err: %d, update %c", err, NDMP_YORN(NLP_SHOULD_UPDATE(nlp))); if (err == 0) { ! err = ndmp_get_cur_bk_time(nlp, &nlp->nlp_cdate); if (err != 0) { ! syslog(LOG_DEBUG, "err %d", err); } else { log_bk_params_v2(session, mod_params, nlp); err = ndmpd_tar_backup(session, mod_params, nlp); } }
*** 1908,1921 **** (void) dbm_free(nlp->nlp_bkmap); nlp->nlp_bkmap = -1; } if (!NLP_ISCHKPNTED(nlp)) ! (void) ndmp_remove_snapshot(nlp->nlp_backup_path, ! nlp->nlp_jstat->js_job_name); ! NDMP_LOG(LOG_DEBUG, "err %d, update %c", err, NDMP_YORN(NLP_SHOULD_UPDATE(nlp))); if (err == 0 && NLP_SHOULD_UPDATE(nlp)) { if (ndmpd_put_dumptime(nlp->nlp_backup_path, nlp->nlp_clevel, nlp->nlp_cdate) < 0) { --- 1857,1869 ---- (void) dbm_free(nlp->nlp_bkmap); nlp->nlp_bkmap = -1; } if (!NLP_ISCHKPNTED(nlp)) ! (void) backup_dataset_destroy(nlp); ! syslog(LOG_DEBUG, "err %d, update %c", err, NDMP_YORN(NLP_SHOULD_UPDATE(nlp))); if (err == 0 && NLP_SHOULD_UPDATE(nlp)) { if (ndmpd_put_dumptime(nlp->nlp_backup_path, nlp->nlp_clevel, nlp->nlp_cdate) < 0) {