block, cfq: fix race condition in cic creation path and tighten locking
authorTejun Heo <tj@kernel.org>
Tue, 13 Dec 2011 23:33:38 +0000 (00:33 +0100)
committerJens Axboe <axboe@kernel.dk>
Tue, 13 Dec 2011 23:33:38 +0000 (00:33 +0100)
commit216284c352a0061f5b20acff2c4e50fb43fea183
tree01611f6d35c041a941269cb3dd3926c0711722ae
parentdc86900e0a8f665122de6faadd27fb4c6d2b3e4d
block, cfq: fix race condition in cic creation path and tighten locking

cfq_get_io_context() would fail if multiple tasks race to insert cic's
for the same association.  This patch restructures
cfq_get_io_context() such that slow path insertion race is handled
properly.

Note that the restructuring also makes cfq_get_io_context() called
under queue_lock and performs both ioc and cfqd insertions while
holding both ioc and queue locks.  This is part of on-going locking
tightening and will be used to simplify synchronization rules.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/cfq-iosched.c