diff options
author | Brian Behlendorf <[email protected]> | 2014-08-06 09:59:01 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-08-06 16:09:28 -0700 |
commit | ab6f407faa0188219fb4852ac5e05f1934c985ee (patch) | |
tree | 86b2323b78721c506ae726c742462f7e51c2c587 /module/zfs/dsl_dataset.c | |
parent | 1ffe90c5d3b63d2e7f9fab02da20671965e1d7b4 (diff) |
Use KM_PUSHPAGE in dsl_dataset_rollback_check()
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 <[email protected]>
Signed-off-by: Eric Dillmann <[email protected]>
Closes #2569
Diffstat (limited to 'module/zfs/dsl_dataset.c')
-rw-r--r-- | module/zfs/dsl_dataset.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c index e23dd6b06..a5594f15c 100644 --- a/module/zfs/dsl_dataset.c +++ b/module/zfs/dsl_dataset.c @@ -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) |