/* * ndmp_send_recovery_stat_v3 * * Send the recovery status to the DMA */ int ndmp_send_recovery_stat_v3(ndmpd_module_params_t *params, ndmp_lbr_params_t *nlp, int idx, int stat) { int rv; mem_ndmp_name_v3_t *ep; rv = -1; if (!params) { syslog(LOG_DEBUG, "params == NULL"); } else if (!params->mp_file_recovered_func) { syslog(LOG_DEBUG, "paramsfile_recovered_func == NULL"); } else if (!nlp) { syslog(LOG_DEBUG, "nlp == NULL"); } else if (idx < 0) { syslog(LOG_DEBUG, "idx(%d) < 0", idx); } else if (!(ep = (mem_ndmp_name_v3_t *)MOD_GETNAME(params, idx))) { syslog(LOG_DEBUG, "nlist[%d] == NULL", idx); } else if (!ep->nm3_opath) { syslog(LOG_DEBUG, "nlist[%d].nm3_opath == NULL", idx); } else { syslog(LOG_DEBUG, "ep[%d].nm3_opath \"%s\"", idx, ep->nm3_opath); rv = MOD_FILERECOVERD(params, ep->nm3_opath, stat); } return (rv); }
/*ARGSUSED*/ int ndmpd_path_restored(lbr_fhlog_call_backs_t *cbp, char *name, struct stat64 *stp, u_longlong_t ll_pos) { int rv; ndmp_name *entp; ndmp_lbr_params_t *nlp; ndmpd_module_params_t *params; int pos = (int)ll_pos; if (cbp == NULL) { syslog(LOG_DEBUG, "cbp is NULL"); return (-1); } if (name == NULL) { syslog(LOG_DEBUG, "name is NULL"); return (-1); } if ((nlp = ndmp_get_nlp(cbp->fh_cookie)) == NULL) { syslog(LOG_DEBUG, "nlp is NULL"); return (-1); } if (pos < 0 || pos >= nlp->nlp_nfiles) { syslog(LOG_DEBUG, "Invalid pos: %d", pos); return (-1); } params = get_params(cbp->fh_cookie); if (params == NULL || params->mp_file_recovered_func == NULL) return (-1); rv = 0; if (!nlp->nlp_restored[pos]) { entp = (ndmp_name *)MOD_GETNAME(params, pos); if (entp && entp->name) name = entp->name; if ((rv = MOD_FILERECOVERD(params, name, 0)) >= 0) nlp->nlp_restored[pos] = TRUE; } return (rv); }
/* * send_unrecovered_list * * Creates a list of restored files * * Parameters: * params (input) - NDMP parameters * nlp (input) - NDMP/LBR parameters * * Returns: * 0: on success * -1: otherwise */ static int send_unrecovered_list(ndmpd_module_params_t *params, ndmp_lbr_params_t *nlp) { 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; } } return (rv); }