Messages in this thread | | | Date | Wed, 16 Feb 2011 18:31:14 +1100 | From | NeilBrown <> | Subject | blk_throtl_exit taking q->queue_lock is problematic |
| |
Hi,
I recently discovered that blk_throtl_exit takes ->queue_lock when a blockdev is finally released.
This is a problem for because by that time the queue_lock doesn't exist any more. It is in a separate data structure controlled by the RAID personality and by the time that the block device is being destroyed the raid personality has shutdown and the data structure containing the lock has been freed.
This has not been a problem before. Nothing else takes queue_lock after blk_cleanup_queue.
I could of course set queue_lock to point to __queue_lock and initialise that, but it seems untidy and probably violates some locking requirements.
Is there some way you could use some other lock - maybe a global lock, or maybe used __queue_lock directly ???
Thanks, NeilBrown
| |