Re: Fw: 2.6.12-mm2: 3ware SATA RAID inaccessible

Jens Axboe
2005-06-27T07:51:49Z

On Sun, Jun 26 2005, James Bottomley wrote:
> On Sun, 2005-06-26 at 15:39 -0700, Andrew Morton wrote:
> > : OK ... I looked ... and it's not pretty. The problem is that the 3ware
> > : assumes certain commands (INQUIRY, READ_CAPACITY, MODE_SENSE + a few
> > : others) are only generated internally and thus only have use_sg == 0.
> > : The scsi-block-tree breaks this assumption because we're trying to
> > : eliminate the use_sg == 0 special case.
> > :
> > : It's important to note that this behaviour is already broken, as anyone
> > : using SG_IO to send commands to the device would have discovered.
>
> OK, I think the attached is the fix. It makes the 3w-xxxx routines
> handle sg data. Can we verify it works first, and then we'll worry
> about how many other internal command processing devices are broken in
> this way.

This wont work at all, I'm afraid. You cannot atomically kmap() the
buffer for queueing, and unmap it from interrupt context. The type
probably isn't correct, and you are not guaranteed to be on the same
CPU when doing the unmap. Thus you end up with corrupted maps and
preemption counts.

--
Jens Axboe