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 - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html