flush request is issued in transaction commit code path usually, so looks using
GFP_KERNEL to allocate memory for flush request bio falls into the classic deadlock issue. dm already gets it right. Signed-off-by: Shaohua Li <shli@xxxxxxxxxxxx> --- drivers/md/md.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux/drivers/md/md.c =================================================================== --- linux.orig/drivers/md/md.c 2012-04-13 10:03:58.395497650 +0800 +++ linux/drivers/md/md.c 2012-04-13 10:04:37.445497882 +0800 @@ -450,7 +450,7 @@ static void submit_flushes(struct work_s atomic_inc(&rdev->nr_pending); atomic_inc(&rdev->nr_pending); rcu_read_unlock(); - bi = bio_alloc_mddev(GFP_KERNEL, 0, mddev); + bi = bio_alloc_mddev(GFP_NOIO, 0, mddev); bi->bi_end_io = md_end_flush; bi->bi_private = rdev; bi->bi_bdev = rdev->bdev; -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html