Print this page
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

*** 37,46 **** --- 37,47 ---- * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/param.h> #include <sys/types.h> + #include <syslog.h> #include <ctype.h> #include <errno.h> #include <fcntl.h> #include <limits.h> #include <stdarg.h>
*** 48,58 **** #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> #include <libnvpair.h> - #include "ndmpd_log.h" #include "ndmpd.h" /* * The dumpdates file on file system. */ --- 49,58 ----
*** 159,169 **** then.tm_min = atoi(&dbuf[E_MINUTE]); then.tm_sec = atoi(&dbuf[E_SECOND]); then.tm_year = atoi(&dbuf[E_YEAR]) - 1900; then.tm_isdst = ndmp_isdst; ! NDMP_LOG(LOG_DEBUG, "yday %d wday %d %d/%d/%d %02d:%02d:%02d", then.tm_yday, then.tm_wday, then.tm_year, then.tm_mon, then.tm_mday, then.tm_hour, then.tm_min, then.tm_sec); *t = mktime(&then); --- 159,169 ---- then.tm_min = atoi(&dbuf[E_MINUTE]); then.tm_sec = atoi(&dbuf[E_SECOND]); then.tm_year = atoi(&dbuf[E_YEAR]) - 1900; then.tm_isdst = ndmp_isdst; ! syslog(LOG_DEBUG, "yday %d wday %d %d/%d/%d %02d:%02d:%02d", then.tm_yday, then.tm_wday, then.tm_year, then.tm_mon, then.tm_mday, then.tm_hour, then.tm_min, then.tm_sec); *t = mktime(&then);
*** 296,306 **** /* * For 'F', 'A', 'I', and 'D' return the character itself. */ if (IS_LBR_BKTYPE(*t)) { ! NDMP_LOG(LOG_DEBUG, "Lbr bk type %c", *t); /* * Skip the backup type character and null terminate the * string. */ *++t = '\0'; --- 296,306 ---- /* * For 'F', 'A', 'I', and 'D' return the character itself. */ if (IS_LBR_BKTYPE(*t)) { ! syslog(LOG_DEBUG, "Lbr bk type %c", *t); /* * Skip the backup type character and null terminate the * string. */ *++t = '\0';
*** 392,403 **** char tbuf[64]; if (!fp) return; - NDMP_LOG(LOG_DEBUG, "[%u]", t); - (void) ctime_r(&t, tbuf, sizeof (tbuf)); /* LINTED variable format specifier */ (void) fprintf(fp, tbuf); } --- 392,401 ----
*** 444,463 **** */ if (!ddp || !tbuf) rv = -1; else if (!(nmp = get_ddname(&tbuf))) { rv = -1; ! NDMP_LOG(LOG_DEBUG, "get_ddname failed 0x%p", nmp); } else if ((ddp->dd_level = get_ddlevel(&tbuf)) < 0) { rv = -1; ! NDMP_LOG(LOG_DEBUG, "dd_level < 0 %d", ddp->dd_level); } else if (!(un_buf = get_ddate(&tbuf))) { rv = -1; ! NDMP_LOG(LOG_DEBUG, "get_ddate failed 0x%p", un_buf); } else if (unctime(un_buf, &ddp->dd_ddate) < 0) { rv = -1; ! NDMP_LOG(LOG_DEBUG, "unctime failed \"%s\"", un_buf); } else { (void) strlcpy(ddp->dd_name, nmp, TLM_MAX_PATH_NAME); rv = 0; } --- 442,461 ---- */ if (!ddp || !tbuf) rv = -1; else if (!(nmp = get_ddname(&tbuf))) { rv = -1; ! syslog(LOG_ERR, "get_ddname failed 0x%p", nmp); } else if ((ddp->dd_level = get_ddlevel(&tbuf)) < 0) { rv = -1; ! syslog(LOG_ERR, "dd_level < 0 %d", ddp->dd_level); } else if (!(un_buf = get_ddate(&tbuf))) { rv = -1; ! syslog(LOG_ERR, "get_ddate failed 0x%p", un_buf); } else if (unctime(un_buf, &ddp->dd_ddate) < 0) { rv = -1; ! syslog(LOG_ERR, "unctime failed \"%s\"", un_buf); } else { (void) strlcpy(ddp->dd_name, nmp, TLM_MAX_PATH_NAME); rv = 0; }
*** 487,508 **** if (getaline(fp, tbuf, sizeof (tbuf)) != tbuf) return (-1); } while (!*tbuf); if (makedumpdate(ddatep, tbuf) < 0) ! NDMP_LOG(LOG_DEBUG, "Unknown intermediate format in %s, line %d", tbuf, *recno); (*recno)++; - if (IS_LBR_BKTYPE(ddatep->dd_level & 0xff)) { - NDMP_LOG(LOG_DEBUG, "Lbr: [%s][%c][%u]", - ddatep->dd_name, ddatep->dd_level, ddatep->dd_ddate); - } else - NDMP_LOG(LOG_DEBUG, "[%s][%d][%u]", - ddatep->dd_name, ddatep->dd_level, ddatep->dd_ddate); - return (0); } /* --- 485,499 ---- if (getaline(fp, tbuf, sizeof (tbuf)) != tbuf) return (-1); } while (!*tbuf); if (makedumpdate(ddatep, tbuf) < 0) ! syslog(LOG_ERR, "Unknown intermediate format in %s, line %d", tbuf, *recno); (*recno)++; return (0); } /*
*** 553,569 **** dumprecout(FILE *fp, dumpdates_t *ddp) { if (!ddp) return; - if (IS_LBR_BKTYPE(ddp->dd_level)) { - NDMP_LOG(LOG_DEBUG, "Lbr: [%s][%c][%u]", - ddp->dd_name, ddp->dd_level, ddp->dd_ddate); - } else - NDMP_LOG(LOG_DEBUG, "[%s][%d][%u]", - ddp->dd_name, ddp->dd_level, ddp->dd_ddate); - put_ddname(fp, ddp->dd_name); (void) fputc('\t', fp); put_ddlevel(fp, ddp->dd_level); (void) fputc('\t', fp); put_ddate(fp, ddp->dd_ddate); --- 544,553 ----
*** 594,622 **** return (-1); fp = fopen(fname, "r"); if (!fp) { if (errno != ENOENT) { ! NDMP_LOG(LOG_ERR, "Cannot read %s: %m.", fname); return (-1); } /* * Dumpdates does not exist, make an empty one. */ ! NDMP_LOG(LOG_DEBUG, "No file `%s', making an empty one", fname); fp = fopen(fname, "w"); if (!fp) { ! NDMP_LOG(LOG_ERR, "Cannot create %s: %m.", fname); return (-1); } (void) fclose(fp); fp = fopen(fname, "r"); if (!fp) { ! NDMP_LOG(LOG_ERR, "Cannot read %s after creating it. %m.", fname); return (-1); } } --- 578,606 ---- return (-1); fp = fopen(fname, "r"); if (!fp) { if (errno != ENOENT) { ! syslog(LOG_ERR, "Cannot read %s: %m.", fname); return (-1); } /* * Dumpdates does not exist, make an empty one. */ ! syslog(LOG_DEBUG, "No file `%s', making an empty one", fname); fp = fopen(fname, "w"); if (!fp) { ! syslog(LOG_ERR, "Cannot create %s: %m.", fname); return (-1); } (void) fclose(fp); fp = fopen(fname, "r"); if (!fp) { ! syslog(LOG_ERR, "Cannot read %s after creating it. %m.", fname); return (-1); } }
*** 649,683 **** if (!path) return (-1); if (IS_LBR_BKTYPE(level)) { ! NDMP_LOG(LOG_DEBUG, "Lbr: [%s][%c][%u]", path, level, ddate); } else { ! NDMP_LOG(LOG_DEBUG, "[%s][%d][%u]", path, level, ddate); } if (!ddates_pathname(fname)) { ! NDMP_LOG(LOG_ERR, "Cannot get dumpdate file path name."); return (-1); } rfp = fopen(fname, "r"); if (!rfp) { ! NDMP_LOG(LOG_DEBUG, "Creating %s.", fname); (void) memset((void *)&ddhead, 0, sizeof (ddhead)); if (initdumptimes(&ddhead) < 0) { ! NDMP_LOG(LOG_ERR, "Could not initialize %s.", NDMP_DUMPDATES); dd_free(&ddhead); return (-1); } } else { rv = readdumptimes(rfp, &ddhead); if (rv < 0) { ! NDMP_LOG(LOG_ERR, "Error reading dumpdates file."); (void) fclose(rfp); dd_free(&ddhead); return (-1); } (void) fclose(rfp); --- 633,667 ---- if (!path) return (-1); if (IS_LBR_BKTYPE(level)) { ! syslog(LOG_DEBUG, "Lbr: [%s][%c][%u]", path, level, ddate); } else { ! syslog(LOG_DEBUG, "[%s][%d][%u]", path, level, ddate); } if (!ddates_pathname(fname)) { ! syslog(LOG_ERR, "Cannot get dumpdate file path name."); return (-1); } rfp = fopen(fname, "r"); if (!rfp) { ! syslog(LOG_DEBUG, "Creating %s.", fname); (void) memset((void *)&ddhead, 0, sizeof (ddhead)); if (initdumptimes(&ddhead) < 0) { ! syslog(LOG_ERR, "Could not initialize %s.", NDMP_DUMPDATES); dd_free(&ddhead); return (-1); } } else { rv = readdumptimes(rfp, &ddhead); if (rv < 0) { ! syslog(LOG_ERR, "Error reading dumpdates file."); (void) fclose(rfp); dd_free(&ddhead); return (-1); } (void) fclose(rfp);
*** 684,716 **** } (void) snprintf(bakfname, PATH_MAX, "%s.bak", fname); wfp = fopen(bakfname, "w"); if (!wfp) { ! NDMP_LOG(LOG_ERR, "Cannot open %s: %m.", bakfname); dd_free(&ddhead); return (-1); } ! NDMP_LOG(LOG_DEBUG, "[%s][%s]", fname, bakfname); /* try to locate the entry in the file */ found = 0; for (ddp = ddhead.dd_next; ddp; ddp = ddp->dd_next) { if (ddp->dd_level != level) continue; if (strcmp(path, ddp->dd_name)) continue; ! NDMP_LOG(LOG_DEBUG, "Found: [%s][%d][%u]", ddp->dd_name, ddp->dd_level, ddp->dd_ddate); /* update the record for the entry */ found = 1; ddp->dd_ddate = ddate; ! NDMP_LOG(LOG_DEBUG, "Updated to: [%s][%d][%u]", ddp->dd_name, ddp->dd_level, ddp->dd_ddate); } /* dump all the read records */ --- 668,700 ---- } (void) snprintf(bakfname, PATH_MAX, "%s.bak", fname); wfp = fopen(bakfname, "w"); if (!wfp) { ! syslog(LOG_ERR, "Cannot open %s: %m.", bakfname); dd_free(&ddhead); return (-1); } ! syslog(LOG_DEBUG, "[%s][%s]", fname, bakfname); /* try to locate the entry in the file */ found = 0; for (ddp = ddhead.dd_next; ddp; ddp = ddp->dd_next) { if (ddp->dd_level != level) continue; if (strcmp(path, ddp->dd_name)) continue; ! syslog(LOG_DEBUG, "Found: [%s][%d][%u]", ddp->dd_name, ddp->dd_level, ddp->dd_ddate); /* update the record for the entry */ found = 1; ddp->dd_ddate = ddate; ! syslog(LOG_DEBUG, "Updated to: [%s][%d][%u]", ddp->dd_name, ddp->dd_level, ddp->dd_ddate); } /* dump all the read records */
*** 748,766 **** if (!fname || !*fname || !path || !*path) return (-1); if (IS_LBR_BKTYPE(level & 0xff)) { ! NDMP_LOG(LOG_DEBUG, "Lbr: [%s][%s][%c][%u]", fname, path, level, ddate); } else ! NDMP_LOG(LOG_DEBUG, "[%s][%s][%d][%u]", fname, path, level, ddate); if (!ndmpd_make_bk_dir_path(fpath, fname)) { ! NDMP_LOG(LOG_ERR, "Cannot get dumpdate file path name %s.", fname); return (-1); } (void) snprintf(bakfpath, PATH_MAX, "%s.bak", fpath); --- 732,750 ---- if (!fname || !*fname || !path || !*path) return (-1); if (IS_LBR_BKTYPE(level & 0xff)) { ! syslog(LOG_DEBUG, "Lbr: [%s][%s][%c][%u]", fname, path, level, ddate); } else ! syslog(LOG_DEBUG, "[%s][%s][%d][%u]", fname, path, level, ddate); if (!ndmpd_make_bk_dir_path(fpath, fname)) { ! syslog(LOG_ERR, "Cannot get dumpdate file path name %s.", fname); return (-1); } (void) snprintf(bakfpath, PATH_MAX, "%s.bak", fpath);
*** 771,794 **** */ fp = fopen(fpath, "r"); if (fp) { (void) fclose(fp); if (filecopy(bakfpath, fpath) != 0) { ! NDMP_LOG(LOG_ERR, "Cannot copy %s to %s: %m.", fpath, bakfpath); return (-1); } } /* open the new copy to append the record to it */ fp = fopen(bakfpath, "a"); if (!fp) { ! NDMP_LOG(LOG_ERR, "Cannot open %s: %m.", bakfpath); return (-1); } ! NDMP_LOG(LOG_DEBUG, "[%s][%s]", fpath, bakfpath); /* append a new record */ (void) strlcpy(tmpdd.dd_name, path, TLM_MAX_PATH_NAME); tmpdd.dd_level = level; tmpdd.dd_ddate = ddate; --- 755,778 ---- */ fp = fopen(fpath, "r"); if (fp) { (void) fclose(fp); if (filecopy(bakfpath, fpath) != 0) { ! syslog(LOG_ERR, "Cannot copy %s to %s: %m.", fpath, bakfpath); return (-1); } } /* open the new copy to append the record to it */ fp = fopen(bakfpath, "a"); if (!fp) { ! syslog(LOG_ERR, "Cannot open %s: %m.", bakfpath); return (-1); } ! syslog(LOG_DEBUG, "[%s][%s]", fpath, bakfpath); /* append a new record */ (void) strlcpy(tmpdd.dd_name, path, TLM_MAX_PATH_NAME); tmpdd.dd_level = level; tmpdd.dd_ddate = ddate;
*** 840,850 **** char *strval = NULL; if (!path || !level || !ddate) return (-1); ! NDMP_LOG(LOG_DEBUG, "[%s] level %d", path, *level); if (*level == 0) { *ddate = (time_t)0; return (0); --- 824,834 ---- char *strval = NULL; if (!path || !level || !ddate) return (-1); ! syslog(LOG_DEBUG, "[%s] level %d", path, *level); if (*level == 0) { *ddate = (time_t)0; return (0);
*** 911,921 **** * type. */ if (IS_LBR_BKTYPE(*level & 0xff)) { save = find_date(ddp, path, *level, *ddate); ! NDMP_LOG(LOG_DEBUG, "LBR_BKTYPE save 0x%p", save); *ddate = save ? save->dd_ddate : (time_t)0; } else { /* --- 895,905 ---- * type. */ if (IS_LBR_BKTYPE(*level & 0xff)) { save = find_date(ddp, path, *level, *ddate); ! syslog(LOG_DEBUG, "LBR_BKTYPE save 0x%p", save); *ddate = save ? save->dd_ddate : (time_t)0; } else { /*
*** 960,970 **** char vol[ZFS_MAX_DATASET_NAME_LEN]; zfs_handle_t *zhp; char tbuf[64]; int rv; ! NDMP_LOG(LOG_DEBUG, "[%s][%d][%u]", path, level, ddate); /* Check if this is a ZFS dataset */ (void) mutex_lock(&zlib_mtx); if ((zlibh != NULL) && --- 944,954 ---- char vol[ZFS_MAX_DATASET_NAME_LEN]; zfs_handle_t *zhp; char tbuf[64]; int rv; ! syslog(LOG_DEBUG, "[%s][%d][%u]", path, level, ddate); /* Check if this is a ZFS dataset */ (void) mutex_lock(&zlib_mtx); if ((zlibh != NULL) &&
*** 997,1007 **** char vol[ZFS_MAX_DATASET_NAME_LEN]; zfs_handle_t *zhp; char tbuf[64]; int rv; ! NDMP_LOG(LOG_DEBUG, "[%s][%s][%d][%u]", fname, path, level, ddate); /* Check if this is a ZFS dataset */ (void) mutex_lock(&zlib_mtx); if ((zlibh != NULL) && --- 981,991 ---- char vol[ZFS_MAX_DATASET_NAME_LEN]; zfs_handle_t *zhp; char tbuf[64]; int rv; ! syslog(LOG_DEBUG, "[%s][%s][%d][%u]", fname, path, level, ddate); /* Check if this is a ZFS dataset */ (void) mutex_lock(&zlib_mtx); if ((zlibh != NULL) &&