From: Brian Behlendorf Date: Fri, 31 Aug 2012 14:45:27 +0000 (-0700) Subject: Switch KM_SLEEP to KM_PUSHPAGE X-Git-Tag: zfs-0.6.0-rc11~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b404a3f07f430710b92a380cd24dd2d48443d2f4;p=zfs Switch KM_SLEEP to KM_PUSHPAGE This warning indicates the incorrect use of KM_SLEEP in a call path which must use KM_PUSHPAGE to avoid deadlocking in direct reclaim. See commit b8d06fca089fae4680c3a552fc55c512bfb02202 for additional details. SPL: Fixing allocation for task txg_sync (6093) which used GFP flags 0x297bda7c with PF_NOFS set Signed-off-by: Brian Behlendorf Issue #917 --- diff --git a/module/zfs/fm.c b/module/zfs/fm.c index a41d3533b..b91516e7a 100644 --- a/module/zfs/fm.c +++ b/module/zfs/fm.c @@ -672,7 +672,7 @@ zfs_zevent_destroy(zfs_zevent_t *ze) static void * i_fm_alloc(nv_alloc_t *nva, size_t size) { - return (kmem_zalloc(size, KM_SLEEP)); + return (kmem_zalloc(size, KM_PUSHPAGE)); } /* ARGSUSED */ @@ -740,7 +740,7 @@ fm_nvlist_create(nv_alloc_t *nva) nv_alloc_t *nvhdl; if (nva == NULL) { - nvhdl = kmem_zalloc(sizeof (nv_alloc_t), KM_SLEEP); + nvhdl = kmem_zalloc(sizeof (nv_alloc_t), KM_PUSHPAGE); if (nv_alloc_init(nvhdl, &fm_mem_alloc_ops, NULL, 0) != 0) { kmem_free(nvhdl, sizeof (nv_alloc_t));