mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-02 00:00:03 +03:00
Don't run shrinkers without GFP_KERNEL
This would correspond to GFP_RECLAIM in the kernel - but we don't distinguish between different types of reclaim here. This solves a deadlock in the btree node memory allocation path - we allocate with the btree node cache lock held but without GFP_KERNEL set. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
72add8822c
commit
81aef33957
@ -25,7 +25,7 @@ typedef unsigned short umode_t;
|
|||||||
|
|
||||||
typedef unsigned gfp_t;
|
typedef unsigned gfp_t;
|
||||||
|
|
||||||
#define GFP_KERNEL 0
|
#define GFP_KERNEL 1
|
||||||
#define GFP_ATOMIC 0
|
#define GFP_ATOMIC 0
|
||||||
#define GFP_NOFS 0
|
#define GFP_NOFS 0
|
||||||
#define GFP_NOIO 0
|
#define GFP_NOIO 0
|
||||||
|
@ -88,6 +88,9 @@ void run_shrinkers(gfp_t gfp_mask, bool allocation_failed)
|
|||||||
struct sysinfo info;
|
struct sysinfo info;
|
||||||
s64 want_shrink;
|
s64 want_shrink;
|
||||||
|
|
||||||
|
if (!(gfp_mask & GFP_KERNEL))
|
||||||
|
return;
|
||||||
|
|
||||||
/* Fast out if there are no shrinkers to run. */
|
/* Fast out if there are no shrinkers to run. */
|
||||||
if (list_empty(&shrinker_list))
|
if (list_empty(&shrinker_list))
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user