]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Nov 2017 12:55:14 +0000 (13:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Nov 2017 12:55:14 +0000 (13:55 +0100)
added patches:
rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch

queue-4.4/rbd-use-gfp_noio-for-parent-stat-and-data-requests.patch [new file with mode: 0644]
queue-4.4/series

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 (file)
index 0000000..452488a
--- /dev/null
@@ -0,0 +1,44 @@
+From 1e37f2f84680fa7f8394fd444b6928e334495ccc Mon Sep 17 00:00:00 2001
+From: Ilya Dryomov <idryomov@gmail.com>
+Date: Mon, 6 Nov 2017 11:33:36 +0100
+Subject: rbd: use GFP_NOIO for parent stat and data requests
+
+From: Ilya Dryomov <idryomov@gmail.com>
+
+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 <idryomov@gmail.com>
+Reviewed-by: David Disseldorp <ddiss@suse.de>
+[idryomov@gmail.com: backport to < 4.9: context]
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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);
index 0d39421f449ccf9ff2a01cf10a873b8ca04d58ec..5b3063ac9c27e6db522d44ede98124acbd92e04a 100644 (file)
@@ -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