aboutsummaryrefslogtreecommitdiffstats
path: root/module/zfs/zfs_rlock.c
diff options
context:
space:
mode:
authorMassimo Maggi <[email protected]>2012-10-12 00:55:42 +0200
committerBrian Behlendorf <[email protected]>2012-10-15 09:32:38 -0700
commit6f53a6a2299688b092f8183354a4cc159e3eed20 (patch)
tree5855733cd778c8daadd41f83c5d978841946602a /module/zfs/zfs_rlock.c
parentc418410393325eb01be5b6cc5ff0e6e8aa24af93 (diff)
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 <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #1038
Diffstat (limited to 'module/zfs/zfs_rlock.c')
-rw-r--r--module/zfs/zfs_rlock.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/module/zfs/zfs_rlock.c b/module/zfs/zfs_rlock.c
index 4f34b3758..208de10f3 100644
--- a/module/zfs/zfs_rlock.c
+++ b/module/zfs/zfs_rlock.c
@@ -199,7 +199,7 @@ zfs_range_proxify(avl_tree_t *tree, rl_t *rl)
rl->r_cnt = 0;
/* create a proxy range lock */
- proxy = kmem_alloc(sizeof (rl_t), KM_SLEEP);
+ proxy = kmem_alloc(sizeof (rl_t), KM_PUSHPAGE);
proxy->r_off = rl->r_off;
proxy->r_len = rl->r_len;
proxy->r_cnt = 1;
@@ -228,7 +228,7 @@ zfs_range_split(avl_tree_t *tree, rl_t *rl, uint64_t off)
ASSERT(rl->r_read_wanted == B_FALSE);
/* create the rear proxy range lock */
- rear = kmem_alloc(sizeof (rl_t), KM_SLEEP);
+ rear = kmem_alloc(sizeof (rl_t), KM_PUSHPAGE);
rear->r_off = off;
rear->r_len = rl->r_off + rl->r_len - off;
rear->r_cnt = rl->r_cnt;