Skip to content

Commit

Permalink
Some nvlist allocations in hold processing need to use KM_PUSHPAGE.
Browse files Browse the repository at this point in the history
Commit 95fd54a restructured the
hold/release processing and moved some of the work into the sync task.
The ddura_todelete and the newly-added ddura_chkholds members of the
dsl_dataset_user_release_arg can now be used in the sync task context.

Also, in dsl_dataset_user_hold_sync_one(), tmpholds can be used in the
sync task context.
  • Loading branch information
dweeezil committed Nov 10, 2013
1 parent 09d672d commit 4381976
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions module/zfs/dsl_userhold.c
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ dsl_dataset_user_hold_sync_one(dsl_dataset_t *ds, const char *htag,
nvlist_t *tmpholds;

if (minor != 0)
tmpholds = fnvlist_alloc();
VERIFY0(nvlist_alloc(&tmpholds, NV_UNIQUE_NAME, KM_PUSHPAGE));
else
tmpholds = NULL;
dsl_dataset_user_hold_sync_one_impl(tmpholds, ds, htag, minor, now, tx);
Expand Down Expand Up @@ -600,8 +600,8 @@ dsl_dataset_user_release_impl(nvlist_t *holds, nvlist_t *errlist,

ddura.ddura_holds = holds;
ddura.ddura_errlist = errlist;
ddura.ddura_todelete = fnvlist_alloc();
ddura.ddura_chkholds = fnvlist_alloc();
VERIFY0(nvlist_alloc(&ddura.ddura_todelete, NV_UNIQUE_NAME, KM_PUSHPAGE));
VERIFY0(nvlist_alloc(&ddura.ddura_chkholds, NV_UNIQUE_NAME, KM_PUSHPAGE));

error = dsl_sync_task(pool, dsl_dataset_user_release_check,
dsl_dataset_user_release_sync, &ddura,
Expand Down

0 comments on commit 4381976

Please sign in to comment.