Re: sg regression in 2.6.16-rc5



Mark Rustad wrote:
We have encountered some kind of sg regression with kernel 2.6.16-rc5
relative to 2.6.15. We have a small program that demonstrates the
failure. On 2.6.15 it produces the output:

Alloced dataptr 0 -> 0xb7d07008
IOS: 0
ios 100

indicating that it did 100 operations successfully. On 2.6.16-rc5, it
produces the output:

Alloced dataptr 0 -> 0xa7d10008
SG_IO ioctl error 12 Cannot allocate memory
ios 0

indicating that it did 0 operations successfully. This program is
attempting to do 1MB reads on a SCSI device.

Mark,
You can stop right there with the 1 MB reads. Welcome
to the new, blander sg driver which now shares many
size shortcomings with the block subsystem.

In lk 2.6.15 the sg driver (and the st driver) did its
own scatter gather list allocations. The sg driver
used 32 KB segments (8 times the normal page size)
in each scatter gather element. The maximum number
of scatter gather elements depends on the LLD but
can be no more than 256. That meant the sg driver
allowed a maximum single IO size of 8 MB. There was
also a define in sg.h (SG_SCATTER_SZ and it is still
there) that allowed the 32KB per segment to be increased
allowing larger single command transfers (then 8 MB).

We get the failure both on
an aic79xx parallel SCSI and on aic94xx SAS. With both types of
devices, it works fine on the 2.6.15 kernel. We have also seen this
problem on the 2.6.16-rc4 kernel. In all cases we were running on an
Intel Xeon-based system.

Well this is broken by design. If you and others
talk to the management it may be reversed or a
better solution may be found.

Here is an example of the sg driver in lk 2.6.15-rc5.
The number of bytes each SCSI READ command is trying
to fetch is 'bs * bpt'. Note that it works for 256 KB
per SCSI READ but fails for anything bigger:

# modprobe scsi_debug
# modprobe sg
# sg_dd if=/dev/sg0 of=. bs=512 bpt=512
16384+0 records in
16384+0 records out
# sg_dd if=/dev/sg0 of=. bs=512 bpt=513
sg_read failed, try reducing bpt, at or after lba=0 [0x0]
Some error occurred, remaining block count=16384
0+0 records in
0+0 records out
# sg_dd if=/dev/sg0 of=. bs=512 bpt=1024
sg_read failed, try reducing bpt, at or after lba=0 [0x0]
Some error occurred, remaining block count=16384
0+0 records in
0+0 records out


Doug Gilbert
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: Max SAN time out
    ... It depends on if a hard error was raised by the IO driver or the OS, ... A Soft failure is more tolerable. ... If say a SAN Fiber Switch keeps the port up to the SQL Server, but the SAN drops totally on another port, and the switch does not return an error code, you then get into IO driver and OS defined timeouts. ... Soft failure followed by a hard failure. ...
    (microsoft.public.sqlserver.clustering)
  • Re: Max SAN time out
    ... A Soft failure is more tolerable. ... If a hard error comes up the driver stack to SQL Server, ... If say a SAN Fiber Switch keeps the port up to the SQL Server, ...
    (microsoft.public.sqlserver.clustering)
  • Re: Persistent CPU slowdowns during any gameplay
    ... >computer the heat is a little below the threshold of pain. ... So I'm wondering if there's a driver or some software that is making ... failure of the hardware cooling... ... have the machine checked before it fries due to repeated cooling ...
    (microsoft.public.windowsxp.games)
  • Re: 1394 Error code 0xC0120090
    ... retry if this failure is received. ... but they finally stopped changing this value with each new DDK. ... >> driver is 0xC0120090. ... >> Don't know what these folks at M$ are upto. ...
    (microsoft.public.development.device.drivers)
  • Re: Its me ranting again
    ... (Tony Gardner) ... Failure to do so was a test ... I didn't engage the examiner in discussion about it - best to keep ... And it was explained as being a confident driver. ...
    (uk.media.radio.archers)