]> granicus.if.org Git - zfs/commitdiff
Some nvlist allocations in hold processing need to use KM_PUSHPAGE.
authorTim Chase <tim@chase2k.com>
Wed, 20 Nov 2013 13:56:56 +0000 (07:56 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 2 Dec 2013 22:02:46 +0000 (14:02 -0800)
This should hopefully catch the rest of the allocations in the
user hold/release processing that were missed by commit
65c67ea86e9f112177f1ad32de8e780f10798a64.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1852
Closes #1855

module/zfs/dsl_userhold.c

index 97775b591fb27f1bae5a32fac5211b0900842806..e24ed644408316597c982ad8091988b4fb973060 100644 (file)
@@ -260,7 +260,7 @@ dsl_dataset_user_hold_sync(void *arg, dmu_tx_t *tx)
        uint64_t now = gethrestime_sec();
 
        if (dduha->dduha_minor != 0)
-               tmpholds = fnvlist_alloc();
+               VERIFY0(nvlist_alloc(&tmpholds, NV_UNIQUE_NAME, KM_PUSHPAGE));
        else
                tmpholds = NULL;
        for (pair = nvlist_next_nvpair(dduha->dduha_chkholds, NULL);
@@ -315,7 +315,8 @@ dsl_dataset_user_hold(nvlist_t *holds, minor_t cleanup_minor, nvlist_t *errlist)
                return (0);
 
        dduha.dduha_holds = holds;
-       dduha.dduha_chkholds = fnvlist_alloc();
+       VERIFY0(nvlist_alloc(&dduha.dduha_chkholds, NV_UNIQUE_NAME,
+               KM_PUSHPAGE));
        dduha.dduha_errlist = errlist;
        dduha.dduha_minor = cleanup_minor;