Lines Matching full:holds

143 			 * reported if needed, such as when all holds fail.  in dsl_dataset_user_hold_check()
219 zfs_dbgmsg("couldn't release holds on pool=%s " in dsl_dataset_user_release_onexit()
225 zfs_dbgmsg("couldn't release holds on pool=%s " in dsl_dataset_user_release_onexit()
239 dsl_onexit_hold_cleanup(spa_t *spa, nvlist_t *holds, minor_t minor) in dsl_onexit_hold_cleanup() argument
243 if (minor == 0 || nvlist_empty(holds)) { in dsl_onexit_hold_cleanup()
244 fnvlist_free(holds); in dsl_onexit_hold_cleanup()
254 ca->zhca_holds = holds; in dsl_onexit_hold_cleanup()
303 * holds is nvl of snapname -> holdname
308 * Holds for snapshots that don't exist will be skipped.
310 * If none of the snapshots for requested holds exist then ENOENT will be
313 * If cleanup_minor is not 0, the holds will be temporary, which will be cleaned
316 * On success all the holds, for snapshots that existed, will be created and 0
319 * On failure no holds will be created, the errlist will be filled in,
322 * In all cases the errlist will contain entries for holds where the snapshot
326 dsl_dataset_user_hold(nvlist_t *holds, minor_t cleanup_minor, nvlist_t *errlist) in dsl_dataset_user_hold() argument
332 pair = nvlist_next_nvpair(holds, NULL); in dsl_dataset_user_hold()
336 dduha.dduha_holds = holds; in dsl_dataset_user_hold()
344 fnvlist_num_pairs(holds), ZFS_SPACE_CHECK_RESERVED); in dsl_dataset_user_hold()
371 dsl_dataset_t *ds, nvlist_t *holds, const char *snapname) in dsl_dataset_user_release_check_one() argument
381 if (nvlist_empty(holds)) in dsl_dataset_user_release_check_one()
389 for (nvpair_t *pair = nvlist_next_nvpair(holds, NULL); pair != NULL; in dsl_dataset_user_release_check_one()
390 pair = nvlist_next_nvpair(holds, pair)) { in dsl_dataset_user_release_check_one()
401 * Non-existent holds are put on the errlist, but don't in dsl_dataset_user_release_check_one()
465 nvlist_t *holds; in dsl_dataset_user_release_check() local
468 error = nvpair_value_nvlist(pair, &holds); in dsl_dataset_user_release_check()
475 holds, snapname); in dsl_dataset_user_release_check()
496 dsl_dataset_user_release_sync_one(dsl_dataset_t *ds, nvlist_t *holds, in dsl_dataset_user_release_sync_one() argument
502 for (nvpair_t *pair = nvlist_next_nvpair(holds, NULL); pair != NULL; in dsl_dataset_user_release_sync_one()
503 pair = nvlist_next_nvpair(holds, pair)) { in dsl_dataset_user_release_sync_one()
554 * Releases holds specified in the nvl holds.
556 * holds is nvl of snapname -> { holdname, ... }
559 * If tmpdp is not NULL the names for holds should be the dsobj's of snapshots,
565 * The release of non-existent holds are skipped.
571 dsl_dataset_user_release_impl(nvlist_t *holds, nvlist_t *errlist, in dsl_dataset_user_release_impl() argument
579 pair = nvlist_next_nvpair(holds, NULL); in dsl_dataset_user_release_impl()
588 /* Temporary holds are specified by dsobj string. */ in dsl_dataset_user_release_impl()
592 for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; in dsl_dataset_user_release_impl()
593 pair = nvlist_next_nvpair(holds, pair)) { in dsl_dataset_user_release_impl()
611 /* Non-temporary holds are specified by name. */ in dsl_dataset_user_release_impl()
615 for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; in dsl_dataset_user_release_impl()
616 pair = nvlist_next_nvpair(holds, pair)) { in dsl_dataset_user_release_impl()
622 ddura.ddura_holds = holds; in dsl_dataset_user_release_impl()
639 * holds is nvl of snapname -> { holdname, ... }
643 dsl_dataset_user_release(nvlist_t *holds, nvlist_t *errlist) in dsl_dataset_user_release() argument
645 return (dsl_dataset_user_release_impl(holds, errlist, NULL)); in dsl_dataset_user_release()
649 * holds is nvl of snapdsobj -> { holdname, ... }
652 dsl_dataset_user_release_tmp(struct dsl_pool *dp, nvlist_t *holds) in dsl_dataset_user_release_tmp() argument
655 (void) dsl_dataset_user_release_impl(holds, NULL, dp); in dsl_dataset_user_release_tmp()