Skip to content

Commit 1e37f2f

Browse files
committed
rbd: use GFP_NOIO for parent stat and data requests
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. Cc: [email protected] Link: http://tracker.ceph.com/issues/22014 Signed-off-by: Ilya Dryomov <[email protected]> Reviewed-by: David Disseldorp <[email protected]>
1 parent 39dae59 commit 1e37f2f

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/block/rbd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2692,7 +2692,7 @@ static int rbd_img_obj_parent_read_full(struct rbd_obj_request *obj_request)
26922692
* from the parent.
26932693
*/
26942694
page_count = (u32)calc_pages_for(0, length);
2695-
pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
2695+
pages = ceph_alloc_page_vector(page_count, GFP_NOIO);
26962696
if (IS_ERR(pages)) {
26972697
result = PTR_ERR(pages);
26982698
pages = NULL;
@@ -2827,7 +2827,7 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request)
28272827
*/
28282828
size = sizeof (__le64) + sizeof (__le32) + sizeof (__le32);
28292829
page_count = (u32)calc_pages_for(0, size);
2830-
pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
2830+
pages = ceph_alloc_page_vector(page_count, GFP_NOIO);
28312831
if (IS_ERR(pages)) {
28322832
ret = PTR_ERR(pages);
28332833
goto fail_stat_request;

0 commit comments

Comments
 (0)