From: Tim Chase Date: Sun, 15 Sep 2013 03:09:09 +0000 (-0500) Subject: Fix several new KM_SLEEP warnings X-Git-Tag: zfs-0.6.3~257 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5322236eccc7c5e1d23983c78928ad566685e7c;p=zfs Fix several new KM_SLEEP warnings A handful of allocations now occur in the sync path and need to use KM_PUSHPAGE. These were introduced by commit 13fe019. Signed-off-by: Brian Behlendorf Issue #1746 Issue #1737 --- diff --git a/module/zfs/dsl_userhold.c b/module/zfs/dsl_userhold.c index c8bc4424f..0419f3fab 100644 --- a/module/zfs/dsl_userhold.c +++ b/module/zfs/dsl_userhold.c @@ -489,7 +489,7 @@ void dsl_register_onexit_hold_cleanup(dsl_dataset_t *ds, const char *htag, minor_t minor) { - zfs_hold_cleanup_arg_t *ca = kmem_alloc(sizeof (*ca), KM_SLEEP); + zfs_hold_cleanup_arg_t *ca = kmem_alloc(sizeof (*ca), KM_PUSHPAGE); spa_t *spa = dsl_dataset_get_spa(ds); (void) strlcpy(ca->zhca_spaname, spa_name(spa), sizeof (ca->zhca_spaname)); @@ -520,7 +520,7 @@ dsl_dataset_get_holds(const char *dsname, nvlist_t *nvl) zap_attribute_t *za; zap_cursor_t zc; - za = kmem_alloc(sizeof (zap_attribute_t), KM_SLEEP); + za = kmem_alloc(sizeof (zap_attribute_t), KM_PUSHPAGE); for (zap_cursor_init(&zc, ds->ds_dir->dd_pool->dp_meta_objset, ds->ds_phys->ds_userrefs_obj); zap_cursor_retrieve(&zc, za) == 0; diff --git a/module/zfs/rrwlock.c b/module/zfs/rrwlock.c index 8e80166c7..357afbfa5 100644 --- a/module/zfs/rrwlock.c +++ b/module/zfs/rrwlock.c @@ -103,7 +103,7 @@ rrn_add(rrwlock_t *rrl, void *tag) { rrw_node_t *rn; - rn = kmem_alloc(sizeof (*rn), KM_SLEEP); + rn = kmem_alloc(sizeof (*rn), KM_PUSHPAGE); rn->rn_rrl = rrl; rn->rn_next = tsd_get(rrw_tsd_key); rn->rn_tag = tag; diff --git a/module/zfs/zfs_onexit.c b/module/zfs/zfs_onexit.c index 2f60b5e4d..41ae3fdb9 100644 --- a/module/zfs/zfs_onexit.c +++ b/module/zfs/zfs_onexit.c @@ -155,7 +155,7 @@ zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, if (error) return (error); - ap = kmem_alloc(sizeof (zfs_onexit_action_node_t), KM_SLEEP); + ap = kmem_alloc(sizeof (zfs_onexit_action_node_t), KM_PUSHPAGE); list_link_init(&ap->za_link); ap->za_func = func; ap->za_data = data;