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-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-2911 NDMP logging should use syslog and is too chatty

*** 34,45 **** --- 34,48 ---- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ + /* Copyright 2017 Nexenta Systems, Inc. All rights reserved. */ + #include <sys/stat.h> #include <sys/types.h> + #include <syslog.h> #include <cstack.h> #include <ctype.h> #include <dirent.h> #include <errno.h> #include "ndmpd.h"
*** 130,140 **** count_bits_cb(int bmd, u_longlong_t bn, void *arg) { if (dbm_getone(bmd, bn)) { (*(u_longlong_t *)arg)++; if (ndmpd_print_inodes) ! NDMP_LOG(LOG_DEBUG, "%llu", bn); } return (0); } --- 133,143 ---- count_bits_cb(int bmd, u_longlong_t bn, void *arg) { if (dbm_getone(bmd, bn)) { (*(u_longlong_t *)arg)++; if (ndmpd_print_inodes) ! syslog(LOG_DEBUG, "%lu", bn); } return (0); }
*** 159,169 **** if (!ndmpd_mark_count_flag) return; cnt = 0; (void) dbm_apply_ifset(bmd, count_bits_cb, &cnt); ! NDMP_LOG(LOG_DEBUG, "%s %llu inodes marked", path, cnt); } /* * traverse --- 162,172 ---- if (!ndmpd_mark_count_flag) return; cnt = 0; (void) dbm_apply_ifset(bmd, count_bits_cb, &cnt); ! syslog(LOG_DEBUG, "%s %lu inodes marked", path, cnt); } /* * traverse
*** 187,216 **** { int rv; time_t s, e; if (!session || !nlp || !ftp) { ! NDMP_LOG(LOG_DEBUG, "Invalid argument"); return (-1); } ! NDMP_LOG(LOG_DEBUG, "Processing directories of \"%s\"", nlp->nlp_backup_path); (void) time(&s); if (traverse_post(ftp) != 0) { rv = -1; if (!session->ns_data.dd_abort && !NLP_ISSET(nlp, NLPF_ABORTED)) { ! NDMP_LOG(LOG_DEBUG, "Traversing backup path hierarchy \"%s\"", nlp->nlp_backup_path); } } else { (void) dbm_setone(nlp->nlp_bkmap, (u_longlong_t)ROOT_INODE); rv = 0; (void) time(&e); ! NDMP_LOG(LOG_DEBUG, "\"%s\" traversed in %u sec", nlp->nlp_backup_path, (uint_t)(e-s)); count_set_bits(nlp->nlp_backup_path, nlp->nlp_bkmap); } --- 190,219 ---- { int rv; time_t s, e; if (!session || !nlp || !ftp) { ! syslog(LOG_ERR, "Invalid argument in traverse"); return (-1); } ! syslog(LOG_DEBUG, "Processing directories of \"%s\"", nlp->nlp_backup_path); (void) time(&s); if (traverse_post(ftp) != 0) { rv = -1; if (!session->ns_data.dd_abort && !NLP_ISSET(nlp, NLPF_ABORTED)) { ! syslog(LOG_DEBUG, "Traversing backup path hierarchy \"%s\"", nlp->nlp_backup_path); } } else { (void) dbm_setone(nlp->nlp_bkmap, (u_longlong_t)ROOT_INODE); rv = 0; (void) time(&e); ! syslog(LOG_DEBUG, "\"%s\" traversed in %u sec", nlp->nlp_backup_path, (uint_t)(e-s)); count_set_bits(nlp->nlp_backup_path, nlp->nlp_bkmap); }
*** 261,278 **** rv = 0; mpp = (mark_param_t *)arg; tacl = mpp->mp_tacl; nlp = ndmp_get_nlp(mpp->mp_session); if (!mpp) { ! NDMP_LOG(LOG_DEBUG, "NULL argument passed"); rv = -1; } else if (mpp->mp_session->ns_eof) { ! NDMP_LOG(LOG_INFO, "Connection to the client is closed"); rv = -1; } else if (mpp->mp_session->ns_data.dd_abort || (nlp && NLP_ISSET(nlp, NLPF_ABORTED))) { ! NDMP_LOG(LOG_INFO, "Processing directories aborted."); rv = -1; } if (rv != 0) return (rv); --- 264,281 ---- rv = 0; mpp = (mark_param_t *)arg; tacl = mpp->mp_tacl; nlp = ndmp_get_nlp(mpp->mp_session); if (!mpp) { ! syslog(LOG_ERR, "NULL argument passed"); rv = -1; } else if (mpp->mp_session->ns_eof) { ! syslog(LOG_ERR, "Connection to the client is closed"); rv = -1; } else if (mpp->mp_session->ns_data.dd_abort || (nlp && NLP_ISSET(nlp, NLPF_ABORTED))) { ! syslog(LOG_ERR, "Processing directories aborted."); rv = -1; } if (rv != 0) return (rv);
*** 284,299 **** pfhp = pnp->tn_fh; pstp = pnp->tn_st; /* sanity check on fh and stat of the path passed */ if (pstp->st_ino > bl) { ! NDMP_LOG(LOG_DEBUG, "Invalid path inode #%u", (uint_t)pstp->st_ino); return (-1); } if (pstp->st_ino != pfhp->fh_fid) { ! NDMP_LOG(LOG_DEBUG, "Path ino mismatch %u %u", (uint_t)pstp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } /* --- 287,302 ---- pfhp = pnp->tn_fh; pstp = pnp->tn_st; /* sanity check on fh and stat of the path passed */ if (pstp->st_ino > bl) { ! syslog(LOG_ERR, "Invalid path inode #%u", (uint_t)pstp->st_ino); return (-1); } if (pstp->st_ino != pfhp->fh_fid) { ! syslog(LOG_ERR, "Path ino mismatch %u %u", (uint_t)pstp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } /*
*** 307,389 **** efhp = enp->tn_fh; estp = enp->tn_st; /* sanity check on fh and stat of the entry passed */ if (estp->st_ino > bl) { ! NDMP_LOG(LOG_DEBUG, "Invalid entry inode #%u", (uint_t)estp->st_ino); return (-1); } if (estp->st_ino != efhp->fh_fid) { ! NDMP_LOG(LOG_DEBUG, "Entry ino mismatch %u %u", estp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } /* check the dates and mark the bitmap inode */ if (ddate == 0) { /* base backup */ (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); - if (ndmpd_verbose_traverse) { - NDMP_LOG(LOG_DEBUG, "Base Backup"); - NDMP_LOG(LOG_DEBUG, "\"%s/%s\"", - pnp->tn_path, enp->tn_path); - } } else if (estp->st_mtime > ddate) { (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); if (ndmpd_verbose_traverse) { ! NDMP_LOG(LOG_DEBUG, "m(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_mtime, (uint_t)ddate); ! NDMP_LOG(LOG_DEBUG, "\"%s/%s\"", pnp->tn_path, enp->tn_path); } } else if (iscreated(nlp, NULL, tacl, ddate)) { (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); if (ndmpd_verbose_traverse) { ! NDMP_LOG(LOG_DEBUG, "cr(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_mtime, (uint_t)ddate); ! NDMP_LOG(LOG_DEBUG, "\"%s/%s\"", pnp->tn_path, enp->tn_path); } } else if (estp->st_ctime > ddate) { if (!NLP_IGNCTIME(nlp)) { (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); } if (ndmpd_verbose_traverse) { if (NLP_IGNCTIME(nlp)) { ! NDMP_LOG(LOG_DEBUG, "ign c(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_ctime, (uint_t)ddate); } else { ! NDMP_LOG(LOG_DEBUG, "c(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_ctime, (uint_t)ddate); } ! NDMP_LOG(LOG_DEBUG, "\"%s/%s\"", pnp->tn_path, enp->tn_path); } } else if (S_ISDIR(estp->st_mode) && dbm_getone(bmd, (u_longlong_t)estp->st_ino)) { (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); - if (ndmpd_verbose_traverse) { - NDMP_LOG(LOG_DEBUG, "d(%u,%u)", - (uint_t)pstp->st_ino, (uint_t)estp->st_ino); - NDMP_LOG(LOG_DEBUG, "\"%s, %s\"", - pnp->tn_path, enp->tn_path); } - } return (0); } --- 310,381 ---- efhp = enp->tn_fh; estp = enp->tn_st; /* sanity check on fh and stat of the entry passed */ if (estp->st_ino > bl) { ! syslog(LOG_ERR, "Invalid entry inode #%u", (uint_t)estp->st_ino); return (-1); } if (estp->st_ino != efhp->fh_fid) { ! syslog(LOG_ERR, "Entry ino mismatch %u %u", estp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } /* check the dates and mark the bitmap inode */ if (ddate == 0) { /* base backup */ (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); } else if (estp->st_mtime > ddate) { (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); if (ndmpd_verbose_traverse) { ! syslog(LOG_DEBUG, "m(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_mtime, (uint_t)ddate); ! syslog(LOG_DEBUG, "\"%s/%s\"", pnp->tn_path, enp->tn_path); } } else if (iscreated(nlp, NULL, tacl, ddate)) { (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); if (ndmpd_verbose_traverse) { ! syslog(LOG_DEBUG, "cr(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_mtime, (uint_t)ddate); ! syslog(LOG_DEBUG, "\"%s/%s\"", pnp->tn_path, enp->tn_path); } } else if (estp->st_ctime > ddate) { if (!NLP_IGNCTIME(nlp)) { (void) dbm_setone(bmd, (u_longlong_t)estp->st_ino); (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); } if (ndmpd_verbose_traverse) { if (NLP_IGNCTIME(nlp)) { ! syslog(LOG_DEBUG, "ign c(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_ctime, (uint_t)ddate); } else { ! syslog(LOG_DEBUG, "c(%u,%u,%u,%u)", (uint_t)pstp->st_ino, (uint_t)estp->st_ino, (uint_t)estp->st_ctime, (uint_t)ddate); } ! syslog(LOG_DEBUG, "\"%s/%s\"", pnp->tn_path, enp->tn_path); } } else if (S_ISDIR(estp->st_mode) && dbm_getone(bmd, (u_longlong_t)estp->st_ino)) { (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); } return (0); }
*** 408,422 **** { fs_traverse_t ft; mark_param_t mp; if (!session || !nlp || !path || !*path) { ! NDMP_LOG(LOG_DEBUG, "Invalid argument"); return (-1); } ! NDMP_LOG(LOG_DEBUG, "path \"%s\"", path); mp.mp_bmd = nlp->nlp_bkmap; mp.mp_ddate = nlp->nlp_ldate; mp.mp_session = session; mp.mp_nlp = nlp; --- 400,414 ---- { fs_traverse_t ft; mark_param_t mp; if (!session || !nlp || !path || !*path) { ! syslog(LOG_ERR, "Invalid argument in mark_inodes_v2"); return (-1); } ! syslog(LOG_DEBUG, "path \"%s\"", path); mp.mp_bmd = nlp->nlp_bkmap; mp.mp_ddate = nlp->nlp_ldate; mp.mp_session = session; mp.mp_nlp = nlp;
*** 423,433 **** ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = mark_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)ndmp_log; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); } --- 415,425 ---- ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = mark_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)syslog; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); }
*** 436,471 **** * create_bitmap * * Create a dbitmap and return its descriptor. * * Parameters: ! * path (input) - path for which the bitmap should be created * value (input) - the initial value for the bitmap * * Returns: * the dbitmap descriptor */ static int ! create_bitmap(char *path, int value) { char bm_fname[PATH_MAX]; - char buf[TLM_MAX_PATH_NAME]; char *livepath; ulong_t ninode; ! NDMP_LOG(LOG_DEBUG, "path \"%s\"", path); - if (fs_is_chkpntvol(path)) - livepath = (char *)tlm_remove_checkpoint(path, buf); - else - livepath = path; ninode = 1024 * 1024 * 1024; if (ninode == 0) return (-1); ! (void) ndmpd_mk_temp(bm_fname); ! NDMP_LOG(LOG_DEBUG, "path \"%s\"ninode %u bm_fname \"%s\"", livepath, ninode, bm_fname); return (dbm_alloc(bm_fname, (u_longlong_t)ninode, value)); } --- 428,459 ---- * create_bitmap * * Create a dbitmap and return its descriptor. * * Parameters: ! * nlp (input) - pointer to the nlp structure * value (input) - the initial value for the bitmap * * Returns: * the dbitmap descriptor */ static int ! create_bitmap(ndmp_lbr_params_t *nlp, int value) { char bm_fname[PATH_MAX]; char *livepath; ulong_t ninode; ! livepath = NLP_ISCHKPNTED(nlp) ? ! nlp->nlp_mountpoint : nlp->nlp_backup_path; ninode = 1024 * 1024 * 1024; if (ninode == 0) return (-1); ! (void) ndmpd_mk_temp(nlp->nlp_job_name, bm_fname); ! syslog(LOG_DEBUG, "path \"%s\" ninode %u bm_fname \"%s\"", livepath, ninode, bm_fname); return (dbm_alloc(bm_fname, (u_longlong_t)ninode, value)); }
*** 485,499 **** static int create_allset_bitmap(ndmp_lbr_params_t *nlp) { int rv; ! nlp->nlp_bkmap = create_bitmap(nlp->nlp_backup_path, 1); ! NDMP_LOG(LOG_DEBUG, "nlp_bkmap %d", nlp->nlp_bkmap); if (nlp->nlp_bkmap < 0) { ! NDMP_LOG(LOG_DEBUG, "Failed to allocate bitmap."); rv = -1; } else rv = 0; return (rv); --- 473,487 ---- static int create_allset_bitmap(ndmp_lbr_params_t *nlp) { int rv; ! nlp->nlp_bkmap = create_bitmap(nlp, 1); if (nlp->nlp_bkmap < 0) { ! syslog(LOG_ERR, ! "Failed to allocate bitmap in create_allset_bitmap"); rv = -1; } else rv = 0; return (rv);
*** 530,544 **** */ if (nlp->nlp_ldate == (time_t)0) return (create_allset_bitmap(nlp)); rv = 0; ! nlp->nlp_bkmap = create_bitmap(nlp->nlp_backup_path, 0); ! NDMP_LOG(LOG_DEBUG, "nlp_bkmap %d", nlp->nlp_bkmap); if (nlp->nlp_bkmap < 0) { ! NDMP_LOG(LOG_DEBUG, "Failed to allocate bitmap."); rv = -1; } else { if (fs_is_chkpntvol(nlp->nlp_backup_path)) chkpath = nlp->nlp_backup_path; else --- 518,531 ---- */ if (nlp->nlp_ldate == (time_t)0) return (create_allset_bitmap(nlp)); rv = 0; ! nlp->nlp_bkmap = create_bitmap(nlp, 0); if (nlp->nlp_bkmap < 0) { ! syslog(LOG_ERR, "Failed to allocate bitmap in mark_common_v2"); rv = -1; } else { if (fs_is_chkpntvol(nlp->nlp_backup_path)) chkpath = nlp->nlp_backup_path; else
*** 617,636 **** ndmpd_mark_inodes_v2(ndmpd_session_t *session, ndmp_lbr_params_t *nlp) { int rv; if (ndmp_skip_traverse) { ! NDMP_LOG(LOG_INFO, "Skip processing directories \"%s\"", nlp->nlp_backup_path); rv = create_allset_bitmap(nlp); } else { if (NLP_ISTAR(nlp)) rv = mark_tar_inodes_v2(session, nlp); else if (NLP_ISDUMP(nlp)) rv = mark_dump_inodes_v2(session, nlp); else { ! NDMP_LOG(LOG_DEBUG, "Unknown backup type for \"%s\"", nlp->nlp_backup_path); rv = -1; } } --- 604,623 ---- ndmpd_mark_inodes_v2(ndmpd_session_t *session, ndmp_lbr_params_t *nlp) { int rv; if (ndmp_skip_traverse) { ! syslog(LOG_INFO, "Skip processing directories \"%s\"", nlp->nlp_backup_path); rv = create_allset_bitmap(nlp); } else { if (NLP_ISTAR(nlp)) rv = mark_tar_inodes_v2(session, nlp); else if (NLP_ISDUMP(nlp)) rv = mark_dump_inodes_v2(session, nlp); else { ! syslog(LOG_ERR, "Unknown backup type for \"%s\"", nlp->nlp_backup_path); rv = -1; } }
*** 681,702 **** { fs_traverse_t ft; mark_param_t mp; if (!session || !nlp || !path || !*path) { ! NDMP_LOG(LOG_DEBUG, "Invalid argument"); return (-1); } if (nlp->nlp_tokdate == (time_t)0) return (create_allset_bitmap(nlp)); ! nlp->nlp_bkmap = create_bitmap(nlp->nlp_backup_path, 0); if (nlp->nlp_bkmap < 0) { ! NDMP_LOG(LOG_DEBUG, "Failed to allocate bitmap."); return (-1); } - NDMP_LOG(LOG_DEBUG, "nlp_bkmap %d", nlp->nlp_bkmap); mp.mp_bmd = nlp->nlp_bkmap; mp.mp_ddate = nlp->nlp_tokdate; mp.mp_session = session; mp.mp_nlp = nlp; --- 668,688 ---- { fs_traverse_t ft; mark_param_t mp; if (!session || !nlp || !path || !*path) { ! syslog(LOG_ERR, "Invalid argument in mark_tokv3"); return (-1); } if (nlp->nlp_tokdate == (time_t)0) return (create_allset_bitmap(nlp)); ! nlp->nlp_bkmap = create_bitmap(nlp, 0); if (nlp->nlp_bkmap < 0) { ! syslog(LOG_ERR, "Failed to allocate bitmap in mark_tokv3"); return (-1); } mp.mp_bmd = nlp->nlp_bkmap; mp.mp_ddate = nlp->nlp_tokdate; mp.mp_session = session; mp.mp_nlp = nlp;
*** 703,713 **** ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = mark_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)ndmp_log; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); } --- 689,699 ---- ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = mark_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)syslog; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); }
*** 741,757 **** mark_param_t *mpp; ndmp_lbr_params_t *nlp; mpp = (mark_param_t *)arg; if (!mpp) { ! NDMP_LOG(LOG_DEBUG, "NULL argument passed"); return (-1); } nlp = ndmp_get_nlp(mpp->mp_session); if (mpp->mp_session->ns_data.dd_abort || (nlp && NLP_ISSET(nlp, NLPF_ABORTED))) { ! NDMP_LOG(LOG_INFO, "Processing directories aborted."); return (-1); } bmd = mpp->mp_bmd; bl = dbm_getlen(bmd); --- 727,743 ---- mark_param_t *mpp; ndmp_lbr_params_t *nlp; mpp = (mark_param_t *)arg; if (!mpp) { ! syslog(LOG_ERR, "NULL argument passed in marklbrv3"); return (-1); } nlp = ndmp_get_nlp(mpp->mp_session); if (mpp->mp_session->ns_data.dd_abort || (nlp && NLP_ISSET(nlp, NLPF_ABORTED))) { ! syslog(LOG_ERR, "Processing directories aborted."); return (-1); } bmd = mpp->mp_bmd; bl = dbm_getlen(bmd);
*** 759,815 **** pfhp = pnp->tn_fh; pstp = pnp->tn_st; /* sanity check on fh and stat of the path passed */ if (pstp->st_ino > bl) { ! NDMP_LOG(LOG_DEBUG, "Invalid path inode #%u", (uint_t)pstp->st_ino); return (-1); } if (pstp->st_ino != pfhp->fh_fid) { ! NDMP_LOG(LOG_DEBUG, "Path ino mismatch %u %u", (uint_t)pstp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } /* * Always mark the backup path inode number. */ if (!enp->tn_path) { (void) dbm_setone(bmd, pstp->st_ino); - if (ndmpd_verbose_traverse) { - NDMP_LOG(LOG_DEBUG, "d(%u)", (uint_t)pstp->st_ino); - NDMP_LOG(LOG_DEBUG, "\"%s\"", pnp->tn_path); - } return (0); } efhp = enp->tn_fh; estp = enp->tn_st; /* sanity check on fh and stat of the entry passed */ if (estp->st_ino > bl) { ! NDMP_LOG(LOG_DEBUG, "Invalid entry inode #%u", (uint_t)estp->st_ino); return (-1); } if (estp->st_ino != efhp->fh_fid) { ! NDMP_LOG(LOG_DEBUG, "Entry ino mismatch %u %u", estp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } if (S_ISDIR(estp->st_mode) && dbm_getone(bmd, (u_longlong_t)estp->st_ino)) { (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); - if (ndmpd_verbose_traverse) { - NDMP_LOG(LOG_DEBUG, "d(%u,%u)", - (uint_t)pstp->st_ino, (uint_t)estp->st_ino); - NDMP_LOG(LOG_DEBUG, "\"%s, %s\"", - pnp->tn_path, enp->tn_path); } - } return (0); } --- 745,791 ---- pfhp = pnp->tn_fh; pstp = pnp->tn_st; /* sanity check on fh and stat of the path passed */ if (pstp->st_ino > bl) { ! syslog(LOG_ERR, "Invalid path inode #%u", (uint_t)pstp->st_ino); return (-1); } if (pstp->st_ino != pfhp->fh_fid) { ! syslog(LOG_ERR, "Path ino mismatch %u %u", (uint_t)pstp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } /* * Always mark the backup path inode number. */ if (!enp->tn_path) { (void) dbm_setone(bmd, pstp->st_ino); return (0); } efhp = enp->tn_fh; estp = enp->tn_st; /* sanity check on fh and stat of the entry passed */ if (estp->st_ino > bl) { ! syslog(LOG_ERR, "Invalid entry inode #%u", (uint_t)estp->st_ino); return (-1); } if (estp->st_ino != efhp->fh_fid) { ! syslog(LOG_ERR, "Entry ino mismatch %u %u", estp->st_ino, (uint_t)pfhp->fh_fid); return (-1); } if (S_ISDIR(estp->st_mode) && dbm_getone(bmd, (u_longlong_t)estp->st_ino)) { (void) dbm_setone(bmd, (u_longlong_t)pstp->st_ino); } return (0); }
*** 835,858 **** char c; fs_traverse_t ft; mark_param_t mp; if (!session || !nlp || !path || !*path) { ! NDMP_LOG(LOG_DEBUG, "Invalid argument"); return (-1); } /* full and archive backups backup everything */ c = toupper(nlp->nlp_clevel); if (c == 'F' || c == 'A') return (create_allset_bitmap(nlp)); ! nlp->nlp_bkmap = create_bitmap(nlp->nlp_backup_path, 0); if (nlp->nlp_bkmap < 0) { ! NDMP_LOG(LOG_DEBUG, "Failed to allocate bitmap."); return (-1); } - NDMP_LOG(LOG_DEBUG, "nlp_bkmap %d", nlp->nlp_bkmap); mp.mp_bmd = nlp->nlp_bkmap; mp.mp_ddate = 0; mp.mp_session = session; mp.mp_nlp = nlp; --- 811,833 ---- char c; fs_traverse_t ft; mark_param_t mp; if (!session || !nlp || !path || !*path) { ! syslog(LOG_ERR, "Invalid argument in mark_lbrv3"); return (-1); } /* full and archive backups backup everything */ c = toupper(nlp->nlp_clevel); if (c == 'F' || c == 'A') return (create_allset_bitmap(nlp)); ! nlp->nlp_bkmap = create_bitmap(nlp, 0); if (nlp->nlp_bkmap < 0) { ! syslog(LOG_ERR, "Failed to allocate bitmap in mark_lbrv3"); return (-1); } mp.mp_bmd = nlp->nlp_bkmap; mp.mp_ddate = 0; mp.mp_session = session; mp.mp_nlp = nlp;
*** 859,869 **** ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = marklbrv3_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)ndmp_log; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); } --- 834,844 ---- ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = marklbrv3_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)syslog; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); }
*** 890,911 **** fs_traverse_t ft; mark_param_t mp; tlm_acls_t traverse_acl; if (!session || !nlp || !path || !*path) { ! NDMP_LOG(LOG_DEBUG, "Invalid argument"); return (-1); } if (nlp->nlp_ldate == (time_t)0) return (create_allset_bitmap(nlp)); ! nlp->nlp_bkmap = create_bitmap(nlp->nlp_backup_path, 0); if (nlp->nlp_bkmap < 0) { ! NDMP_LOG(LOG_DEBUG, "Failed to allocate bitmap."); return (-1); } - NDMP_LOG(LOG_DEBUG, "nlp_bkmap %d", nlp->nlp_bkmap); /* * We do not want to allocate memory for acl every time we * process a file. */ --- 865,885 ---- fs_traverse_t ft; mark_param_t mp; tlm_acls_t traverse_acl; if (!session || !nlp || !path || !*path) { ! syslog(LOG_ERR, "Invalid argument in mark_levelv3"); return (-1); } if (nlp->nlp_ldate == (time_t)0) return (create_allset_bitmap(nlp)); ! nlp->nlp_bkmap = create_bitmap(nlp, 0); if (nlp->nlp_bkmap < 0) { ! syslog(LOG_ERR, "Failed to allocate bitmap in mark_levelv3"); return (-1); } /* * We do not want to allocate memory for acl every time we * process a file. */
*** 919,929 **** ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = mark_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)ndmp_log; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); } --- 893,903 ---- ft.ft_path = path; ft.ft_lpath = nlp->nlp_backup_path; ft.ft_callbk = mark_cb; ft.ft_arg = &mp; ! ft.ft_logfp = (ft_log_t)syslog; ft.ft_flags = ndmpd_mark_flags; return (traverse(session, nlp, &ft)); }
*** 965,975 **** rv = mark_lbrv3(session, nlp, chkpath); else if (NLP_ISSET(nlp, NLPF_LEVELBK)) { rv = mark_levelv3(session, nlp, chkpath); } else { rv = -1; ! NDMP_LOG(LOG_DEBUG, "Unknown backup type for \"%s\"", nlp->nlp_backup_path); } return (rv); } --- 939,949 ---- rv = mark_lbrv3(session, nlp, chkpath); else if (NLP_ISSET(nlp, NLPF_LEVELBK)) { rv = mark_levelv3(session, nlp, chkpath); } else { rv = -1; ! syslog(LOG_ERR, "Unknown backup type for \"%s\"", nlp->nlp_backup_path); } return (rv); }
*** 1022,1041 **** ndmpd_mark_inodes_v3(ndmpd_session_t *session, ndmp_lbr_params_t *nlp) { int rv; if (ndmp_skip_traverse) { ! NDMP_LOG(LOG_INFO, "Skip processing directories \"%s\"", nlp->nlp_backup_path); rv = create_allset_bitmap(nlp); } else { if (NLP_ISTAR(nlp)) rv = mark_tar_inodesv3(session, nlp); else if (NLP_ISDUMP(nlp)) { rv = mark_commonv3(session, nlp); } else { ! NDMP_LOG(LOG_DEBUG, "Unknown backup type for \"%s\"", nlp->nlp_backup_path); rv = -1; } } --- 996,1015 ---- ndmpd_mark_inodes_v3(ndmpd_session_t *session, ndmp_lbr_params_t *nlp) { int rv; if (ndmp_skip_traverse) { ! syslog(LOG_INFO, "Skip processing directories \"%s\"", nlp->nlp_backup_path); rv = create_allset_bitmap(nlp); } else { if (NLP_ISTAR(nlp)) rv = mark_tar_inodesv3(session, nlp); else if (NLP_ISDUMP(nlp)) { rv = mark_commonv3(session, nlp); } else { ! syslog(LOG_ERR, "Unknown backup type for \"%s\"", nlp->nlp_backup_path); rv = -1; } }