aboutsummaryrefslogtreecommitdiffstats
path: root/block/ioctl.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2012-04-19 16:29:22 -0700
committerJens Axboe <axboe@kernel.dk>2012-04-20 10:06:40 +0200
commitaaf7c680682f1999ef2e574f743c45d1674a8b8a (patch)
tree82d597ddfa7456553262435174948d9fb03fffef /block/ioctl.c
parentblock: collapse blk_alloc_request() into get_request() (diff)
downloadlinux-dev-aaf7c680682f1999ef2e574f743c45d1674a8b8a.tar.xz
linux-dev-aaf7c680682f1999ef2e574f743c45d1674a8b8a.zip
block: fix elvpriv allocation failure handling
Request allocation is mempool backed to guarantee forward progress under memory pressure; unfortunately, this property got broken while adding elvpriv data. Failures during elvpriv allocation, including ioc and icq creation failures, currently make get_request() fail as whole. There's no forward progress guarantee for these allocations - they may fail indefinitely under memory pressure stalling IO and deadlocking the system. This patch updates get_request() such that elvpriv allocation failure doesn't make the whole function fail. If elvpriv allocation fails, the allocation is degraded into !ELVPRIV. This will force the request to ELEVATOR_INSERT_BACK disturbing scheduling but elvpriv alloc failures should be rare (nothing is per-request) and anything is better than deadlocking. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/ioctl.c')
0 files changed, 0 insertions, 0 deletions