From: Massimo Maggi Date: Thu, 11 Oct 2012 23:19:48 +0000 (-0700) Subject: Switch KM_SLEEP to KM_PUSHPAGE X-Git-Tag: zfs-0.8.0-rc1~152^2~339 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dea3505dff1252b337eb1cb8744626fb0f796d86;p=zfs Switch KM_SLEEP to KM_PUSHPAGE In this particular instance the allocation occurred in the context of sys_msync()->...->zpl_putpage() where we must be careful not to initiate additional I/O. Signed-off-by: Massimo Maggi Signed-off-by: Brian Behlendorf --- diff --git a/module/spl/spl-tsd.c b/module/spl/spl-tsd.c index b43da7746..f5c579578 100644 --- a/module/spl/spl-tsd.c +++ b/module/spl/spl-tsd.c @@ -174,7 +174,7 @@ tsd_hash_add(tsd_hash_table_t *table, uint_t key, pid_t pid, void *value) ASSERT3P(tsd_hash_search(table, key, pid), ==, NULL); /* New entry allocate structure, set value, and add to hash */ - entry = kmem_alloc(sizeof(tsd_hash_entry_t), KM_SLEEP); + entry = kmem_alloc(sizeof(tsd_hash_entry_t), KM_PUSHPAGE); if (entry == NULL) SRETURN(ENOMEM); @@ -234,7 +234,7 @@ tsd_hash_add_key(tsd_hash_table_t *table, uint_t *keyp, dtor_func_t dtor) ASSERT3P(table, !=, NULL); /* Allocate entry to be used as a destructor for this key */ - entry = kmem_alloc(sizeof(tsd_hash_entry_t), KM_SLEEP); + entry = kmem_alloc(sizeof(tsd_hash_entry_t), KM_PUSHPAGE); if (entry == NULL) SRETURN(ENOMEM); @@ -293,7 +293,7 @@ tsd_hash_add_pid(tsd_hash_table_t *table, pid_t pid) SENTRY; /* Allocate entry to be used as the process reference */ - entry = kmem_alloc(sizeof(tsd_hash_entry_t), KM_SLEEP); + entry = kmem_alloc(sizeof(tsd_hash_entry_t), KM_PUSHPAGE); if (entry == NULL) SRETURN(ENOMEM);