cfq-iosched: properly protect ioc_gone and ioc count
authorJens Axboe <jens.axboe@oracle.com>
Thu, 29 May 2008 07:32:08 +0000 (09:32 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Thu, 3 Jul 2008 11:21:12 +0000 (13:21 +0200)
commit9a11b4ed0e7c44bca7c939aa544c3c47aae40c12
tree438312dda8a63e0704c2ddbdea958f0d729c6c7e
parentc461a973118346d5c103aaaddd62e53939fd7c67
cfq-iosched: properly protect ioc_gone and ioc count

If we have multiple tasks freeing cfq_io_contexts when cfq-iosched
is being unloaded, we could complete() ioc_gone twice. Fix that by
protecting ioc_gone complete() and clearing with a spinlock for
just that purpose. Doesn't matter from a performance perspective,
since it'll only enter that path when ioc_gone != NULL (when cfq-iosched
is being rmmod'ed).

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/cfq-iosched.c