diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-12-12 12:42:12 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2011-12-12 12:42:12 +0100 |
commit | b302545744c031eae04a43fb1c56cc17e00a193a (patch) | |
tree | 6d72f21f033d5e2e1589dada45b767a0327e45d0 /block/blk-core.c | |
parent | dfaf3c036cd46a73f4ef3e4b75c1f647e503d4e1 (diff) | |
download | op-kernel-dev-b302545744c031eae04a43fb1c56cc17e00a193a.zip op-kernel-dev-b302545744c031eae04a43fb1c56cc17e00a193a.tar.gz |
block/swim3: Locking fixes
The old PowerMac swim3 driver has some "interesting" locking issues,
using a private lock and failing to lock the queue before completing
requests, which triggered WARN_ONs among others.
This rips out the private lock, makes everything operate under the
block queue lock, and generally makes things simpler.
We used to also share a queue between the two possible instances which
was problematic since we might pick the wrong controller in some cases,
so make the queue and the current request per-instance and use
queuedata to point to our private data which is a lot cleaner.
We still share the queue lock but then, it's nearly impossible to actually
use 2 swim3's simultaneously: one would need to have a Wallstreet
PowerBook, the only machine afaik with two of these on the motherboard,
and populate both hotswap bays with a floppy drive (the machine ships
only with one), so nobody cares...
While at it, add a little fix to clear up stale interrupts when loading
the driver or plugging a floppy drive in a bay.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-core.c')
0 files changed, 0 insertions, 0 deletions