diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-10-25 10:14:47 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-10-29 11:33:06 +0100 |
commit | 6eca9004dfcb274a502438a591df5b197690afb1 (patch) | |
tree | fd281ef7c016fbae03e2a27e42a53efd37c3ec63 /block/compat_ioctl.c | |
parent | 3a424f2d56613acfb9e583ec9c85a2be3e3af028 (diff) | |
download | linux-3.10-6eca9004dfcb274a502438a591df5b197690afb1.tar.gz linux-3.10-6eca9004dfcb274a502438a591df5b197690afb1.tar.bz2 linux-3.10-6eca9004dfcb274a502438a591df5b197690afb1.zip |
[BLOCK] Fix bad sharing of tag busy list on queues with shared tag maps
For the locking to work, only the tag map and tag bit map may be shared
(incidentally, I was just explaining this to Nick yesterday, but I
apparently didn't review the code well enough myself). But we also share
the busy list! The busy_list must be queue private, or we need a
block_queue_tag covering lock as well.
So we have to move the busy_list to the queue. This'll work fine, and
it'll actually also fix a problem with blk_queue_invalidate_tags() which
will invalidate tags across all shared queues. This is a bit confusing,
the low level driver should call it for each queue seperately since
otherwise you cannot kill tags on just a single queue for eg a hard
drive that stops responding. Since the function has no callers
currently, it's not an issue.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/compat_ioctl.c')
0 files changed, 0 insertions, 0 deletions