rbd: use GFP_NOIO consistently for request allocations
authorDavid Disseldorp <ddiss@suse.de>
Tue, 5 Apr 2016 09:13:39 +0000 (11:13 +0200)
committerSasha Levin <sasha.levin@oracle.com>
Wed, 20 Apr 2016 05:08:50 +0000 (01:08 -0400)
commit54080a779fc01b934862bd6abfb0caa63a1d953c
tree64f504ccc65edb8940562f06b78d3df30ec65164
parent9b561b878bc40703e21144def6a5c2c8d436b883
rbd: use GFP_NOIO consistently for request allocations

[ Upstream commit 2224d879c7c0f85c14183ef82eb48bd875ceb599 ]

As of 5a60e87603c4c533492c515b7f62578189b03c9c, RBD object request
allocations are made via rbd_obj_request_create() with GFP_NOIO.
However, subsequent OSD request allocations in rbd_osd_req_create*()
use GFP_ATOMIC.

With heavy page cache usage (e.g. OSDs running on same host as krbd
client), rbd_osd_req_create() order-1 GFP_ATOMIC allocations have been
observed to fail, where direct reclaim would have allowed GFP_NOIO
allocations to succeed.

Cc: stable@vger.kernel.org # 3.18+
Suggested-by: Vlastimil Babka <vbabka@suse.cz>
Suggested-by: Neil Brown <neilb@suse.com>
Signed-off-by: David Disseldorp <ddiss@suse.de>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/block/rbd.c