On 01/28/2013 08:16 AM, Pekka Enberg wrote: > On Mon, Jan 28, 2013 at 2:38 AM, Minchan Kim <minchan@xxxxxxxxxx> wrote: >> Now zram allocates new page with GFP_KERNEL in zram I/O path >> if IO is partial. Unfortunately, It may cuase deadlock with > > s/cuase/cause/g > >> reclaim path so this patch solves the problem. > > It'd be nice to know about the problem in more detail. I'm also > curious on why you decided on GFP_ATOMIC for the read path and > GFP_NOIO in the write path. This is because we're holding a kmap_atomic page in the read path. Jerome > >> >> Cc: stable@xxxxxxxxxxxxxxx >> Cc: Jerome Marchand <jmarchan@xxxxxxxxxx> >> Acked-by: Nitin Gupta <ngupta@xxxxxxxxxx> >> Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> >> --- >> drivers/staging/zram/zram_drv.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c >> index 61fb8f1..b285b3a 100644 >> --- a/drivers/staging/zram/zram_drv.c >> +++ b/drivers/staging/zram/zram_drv.c >> @@ -220,7 +220,7 @@ static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec, >> user_mem = kmap_atomic(page); >> if (is_partial_io(bvec)) >> /* Use a temporary buffer to decompress the page */ >> - uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL); >> + uncmem = kmalloc(PAGE_SIZE, GFP_ATOMIC); >> else >> uncmem = user_mem; >> >> @@ -268,7 +268,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index, >> * This is a partial IO. We need to read the full page >> * before to write the changes. >> */ >> - uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL); >> + uncmem = kmalloc(PAGE_SIZE, GFP_NOIO); >> if (!uncmem) { >> pr_info("Error allocating temp memory!\n"); >> ret = -ENOMEM; >> -- >> 1.7.9.5 >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in >> the body to majordomo@xxxxxxxxx. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>