This sequence using sg_rbuf from my sg3_utils package
(www.torque.net/sg) locks at the end of the transfer
just before returning:
$ echo 1 > /proc/scsi/sg/allow_dio
$ sg_rbuf -d -b=512 /dev/sg0
# /dev/sg0 is a fast disk.
# this executes multiple READ BUFFER commands each 512 KB
The box is still usable but the "sg_rbuf" process is
unkillable and ps locks just before it would have
listed the damaged process. Alt-SysRq-T shows that
the sg_rbuf task in "D" state. The stack backtrace is:
write_chan
rwsem_down_write_failed
????
ret_from_fork
This is with sg version 3.2.21 utilising alloc_kiovec_sz()
and friend. I didn't see this "feature" when I tested it
against ac4 before submitting it to you. Changing the "nbhs"
value from 0 to 256 doesn't make any difference. I have
just retested with ac4+sg3.1.21 and it works.
When normal double buffering is used (i.e. no "-d" switch
to the above sg_rbuf) there is no lockup.
Doug Gilbert
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/