From: Greg Kroah-Hartman Date: Sat, 11 Nov 2017 12:55:14 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v3.18.81~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=01a81dd1e4f95d0500a6e24e1203d509bd72e91e;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch --- diff --git a/queue-4.4/rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch b/queue-4.4/rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch new file mode 100644 index 00000000000..452488a5f1b --- /dev/null +++ b/queue-4.4/rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch @@ -0,0 +1,44 @@ +From 1e37f2f84680fa7f8394fd444b6928e334495ccc Mon Sep 17 00:00:00 2001 +From: Ilya Dryomov +Date: Mon, 6 Nov 2017 11:33:36 +0100 +Subject: rbd: use GFP_NOIO for parent stat and data requests + +From: Ilya Dryomov + +commit 1e37f2f84680fa7f8394fd444b6928e334495ccc upstream. + +rbd_img_obj_exists_submit() and rbd_img_obj_parent_read_full() are on +the writeback path for cloned images -- we attempt a stat on the parent +object to see if it exists and potentially read it in to call copyup. +GFP_NOIO should be used instead of GFP_KERNEL here. + +Link: http://tracker.ceph.com/issues/22014 +Signed-off-by: Ilya Dryomov +Reviewed-by: David Disseldorp +[idryomov@gmail.com: backport to < 4.9: context] +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/block/rbd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/block/rbd.c ++++ b/drivers/block/rbd.c +@@ -2736,7 +2736,7 @@ static int rbd_img_obj_parent_read_full( + * from the parent. + */ + page_count = (u32)calc_pages_for(0, length); +- pages = ceph_alloc_page_vector(page_count, GFP_KERNEL); ++ pages = ceph_alloc_page_vector(page_count, GFP_NOIO); + if (IS_ERR(pages)) { + result = PTR_ERR(pages); + pages = NULL; +@@ -2863,7 +2863,7 @@ static int rbd_img_obj_exists_submit(str + */ + size = sizeof (__le64) + sizeof (__le32) + sizeof (__le32); + page_count = (u32)calc_pages_for(0, size); +- pages = ceph_alloc_page_vector(page_count, GFP_KERNEL); ++ pages = ceph_alloc_page_vector(page_count, GFP_NOIO); + if (IS_ERR(pages)) + return PTR_ERR(pages); + diff --git a/queue-4.4/series b/queue-4.4/series index 0d39421f449..5b3063ac9c2 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -49,3 +49,4 @@ mips-ar7-defer-registration-of-gpio.patch mips-ar7-ensure-that-serial-ports-are-properly-set-up.patch input-elan_i2c-add-elan060c-to-the-acpi-table.patch drm-vmwgfx-fix-ubuntu-17.10-wayland-black-screen-issue.patch +rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch