Example #1
0
/*
 * 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);
}
Example #2
0
/*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);
}
Example #3
0
/*
 * 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);
}