]> granicus.if.org Git - zfs/commitdiff
Fix several new KM_SLEEP warnings
authorTim Chase <tim@chase2k.com>
Sun, 15 Sep 2013 03:09:09 +0000 (22:09 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 25 Sep 2013 22:44:22 +0000 (15:44 -0700)
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 <behlendorf1@llnl.gov>
Issue #1746
Issue #1737

module/zfs/dsl_userhold.c
module/zfs/rrwlock.c
module/zfs/zfs_onexit.c

index c8bc4424f85791bd3166b5773ad5fb208a674c86..0419f3fab27a3774c4df242d4c104834c51e32be 100644 (file)
@@ -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;
index 8e80166c7d14daae2f9e16528cd6f2f948022133..357afbfa54813db78a1cdacd6d962a4054236e15 100644 (file)
@@ -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;
index 2f60b5e4de158f67780917f50b1e7cfa59716b95..41ae3fdb98e9c8bc3bb4a64f6d7adec0240ab86c 100644 (file)
@@ -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;