diff options
author | Ilya Dryomov <ilya.dryomov@inktank.com> | 2014-08-04 18:04:39 +0400 |
---|---|---|
committer | Ilya Dryomov <ilya.dryomov@inktank.com> | 2014-08-07 14:56:20 +0400 |
commit | bc1ecc65a259fa9333dc8bd6a4ba0cf03b7d4bf8 (patch) | |
tree | 270e618c8c98afb1bb591415a343fab58060f36c /include/sound/rcar_snd.h | |
parent | 282c105225ec3229f344c5fced795b9e1e634440 (diff) |
rbd: rework rbd_request_fn()
While it was never a good idea to sleep in request_fn(), commit
34c6bc2c919a ("locking/mutexes: Add extra reschedule point") made it
a *bad* idea. mutex_lock() since 3.15 may reschedule *before* putting
task on the mutex wait queue, which for tasks in !TASK_RUNNING state
means block forever. request_fn() may be called with !TASK_RUNNING on
the way to schedule() in io_schedule().
Offload request handling to a workqueue, one per rbd device, to avoid
calling blocking primitives from rbd_request_fn().
Fixes: http://tracker.ceph.com/issues/8818
Cc: stable@vger.kernel.org # 3.16, needs backporting for 3.15
Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Tested-by: Eric Eastman <eric0e@aol.com>
Tested-by: Greg Wilson <greg.wilson@keepertech.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Diffstat (limited to 'include/sound/rcar_snd.h')
0 files changed, 0 insertions, 0 deletions