]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Use KM_PUSHPAGE in dsl_dataset_rollback_check()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 6 Aug 2014 16:59:01 +0000 (09:59 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 6 Aug 2014 23:09:28 +0000 (16:09 -0700)
The dsl_dataset_rollback_check() function is executed in the
txg_sync context.  To prevent a potential deadlock due to direct
memory reclaim it must use KM_PUSHPAGE.  This was introduced by
the recent 'zfs bookmark' features, commit da53684.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Eric Dillmann <eric@jave.fr>
Closes #2569

module/zfs/dsl_dataset.c

index e23dd6b061a0edf405c739df2f12526b16e904a3..a5594f15c985cbec3d3c015b3325eb6276c7ac07 100644 (file)
@@ -1763,9 +1763,9 @@ dsl_dataset_rollback_check(void *arg, dmu_tx_t *tx)
        }
 
        /* must not have any bookmarks after the most recent snapshot */
-       proprequest = fnvlist_alloc();
+       VERIFY0(nvlist_alloc(&proprequest, NV_UNIQUE_NAME, KM_PUSHPAGE));
        fnvlist_add_boolean(proprequest, zfs_prop_to_name(ZFS_PROP_CREATETXG));
-       bookmarks = fnvlist_alloc();
+       VERIFY0(nvlist_alloc(&bookmarks, NV_UNIQUE_NAME, KM_PUSHPAGE));
        error = dsl_get_bookmarks_impl(ds, proprequest, bookmarks);
        fnvlist_free(proprequest);
        if (error != 0)