[PATCH] raid5: use kmalloc_array() for GFP_NOIO flag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit b330e6a49dc3 ("md: convert to kvmalloc") uses kvmalloc_array()
to allocate memory with GFP_NOIO flag in resize_chunks() via function
scribble_alloc(),
2269	err = scribble_alloc(percpu, new_disks,
2270			     new_sectors / STRIPE_SECTORS,
2271			     GFP_NOIO);

Indeed kvmalloc() inside kvmalloc_array() does not accept non GFP_KERNEL
compatible flags, it means GFP_NOIO will make kvmalloc_node() call
kmalloc_node() instead, which is not the above listed code wants.

For md raid1 and raid10 code, such allocation just simply calls
kmalloc_array(), which is enough and works fine. This patch removes
the misleading kvmalloc_array() and simply uses kmalloc_array() as
md raid1 and raid10 code do.

Fixes: b330e6a49dc3 ("md: convert to kvmalloc")
Signed-off-by: Coly Li <colyli@xxxxxxx>
Cc: Kent Overstreet <kent.overstreet@xxxxxxxxx>
Cc: Michal Hocko <mhocko@xxxxxxxx>
---
 drivers/md/raid5.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index ba00e9877f02..dda2701290bf 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -2235,7 +2235,7 @@ static int scribble_alloc(struct raid5_percpu *percpu,
 		sizeof(addr_conv_t) * (num+2);
 	void *scribble;
 
-	scribble = kvmalloc_array(cnt, obj_size, flags);
+	scribble = kmalloc_array(cnt, obj_size, flags);
 	if (!scribble)
 		return -ENOMEM;
 
-- 
2.25.0




[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux