All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 1/4] zram: Fix deadlock bug in partial write
@ 2013-01-22  0:07 ` Minchan Kim
  0 siblings, 0 replies; 14+ messages in thread
From: Minchan Kim @ 2013-01-22  0:07 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Nitin Gupta, Seth Jennings, Dan Magenheimer,
	Konrad Rzeszutek Wilk, Jerome Marchand, Pekka Enberg, linux-mm,
	linux-kernel, Minchan Kim, stable

Now zram allocates new page with GFP_KERNEL in zram I/O path
if IO is partial. Unfortunately, It may cuase deadlock with
reclaim path so this patch solves the problem.

Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Jerome Marchand <jmarchan@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Minchan Kim <minchan@kernel.org>
---

We could use GFP_IO instead of GFP_ATOMIC in zram_bvec_read with
some modification related to buffer allocation in case of partial IO.
But it needs more churn and prevent merge this patch into stable
if we should send this to stable so I'd like to keep it as simple
as possbile. GFP_IO usage could be separate patch after we merge it.
Thanks.

 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


^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2013-01-22 18:02 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-22  0:07 [PATCH v4 1/4] zram: Fix deadlock bug in partial write Minchan Kim
2013-01-22  0:07 ` Minchan Kim
2013-01-22  0:07 ` [PATCH v4 2/4] zram: force disksize setting before using zram Minchan Kim
2013-01-22  0:07   ` Minchan Kim
2013-01-22  0:07 ` [PATCH v4 3/4] zram: give up lazy initialization of zram metadata Minchan Kim
2013-01-22  0:07   ` Minchan Kim
2013-01-22  0:07 ` [PATCH v4 4/4] zram: get rid of lockdep warning Minchan Kim
2013-01-22  0:07   ` Minchan Kim
2013-01-22  9:47 ` [PATCH v4 1/4] zram: Fix deadlock bug in partial write Jerome Marchand
2013-01-22  9:47   ` Jerome Marchand
2013-01-22 15:20   ` Minchan Kim
2013-01-22 15:20     ` Minchan Kim
2013-01-22 18:02 ` Nitin Gupta
2013-01-22 18:02   ` Nitin Gupta

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.