Fwd: Query - Related to kernel changes for GFP_NOIO flag

From: Suraj Choudhari
Date: Sun Mar 05 2017 - 04:10:27 EST


Hi,

GFP_NOIO flag used for kmalloc is currently defined as - '__GFP_RECLAIM'

#define GFP_NOIO (__GFP_RECLAIM)

#define __GFP_RECLAIM ((__force
gfp_t)(___GFP_DIRECT_RECLAIM|___GFP_KSWAPD_RECLAIM


However, prior to 4.4 kernel, this flag was defined as __GFP_WAIT.
#define GFP_NOIO (__GFP_WAIT)


Queries -
======
1] Can any physical disk IO happen due to memory allocation done
using 'GFP_NOIO' ?

The reason to ask is since the GFP_NOIO is now modified to use
__GFP_KSWAPD_RECLAIM, so I am thinking that physical disk IO may
probably happen while swapping the stale pages to disk in kswapd.

2] If kernel code wants to use kmalloc() and wants to ensure there is
NO any physical/disk IO due to kmalloc, shall the kernel code use
__GFP_DIRECT_RECLAIM instead of GFP_NOIO ?


Thanks,
Suraj