* bytes/CDB of SCSI pass thru grossly limited maybe
@ 2004-07-30 23:04 Pat LaVarre
2004-07-31 14:12 ` Jens Axboe
0 siblings, 1 reply; 27+ messages in thread
From: Pat LaVarre @ 2004-07-30 23:04 UTC (permalink / raw)
To: linux-scsi
Offline a friend reports seeing bytes/CDB of Linux ioctl SG_IO grossly
limited - like down below 0.000000128 GB/CDB for op x3B "WRITE BUFFER".
I'm writing now to give this audience the chance to comment.
Left to myself, I'll hope to work to reproduce that result, compare USB/
PATAPI/ FireWire/ SATAPI, try the alternative of ioctl
CDROM_SEND_PACKET, ... and report back here if/when I discover anything
interesting.
I remember seeing talk of tweaking the kernel to choke off the default
kernel thruput whenever status/ command overhead is high, but before now
I don't remember hearing of choking off SCSI pass thru as well.
Pat LaVarre
http://linux-pel.blog-city.com/read/752705.htm
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-07-30 23:04 bytes/CDB of SCSI pass thru grossly limited maybe Pat LaVarre
@ 2004-07-31 14:12 ` Jens Axboe
2004-08-16 17:55 ` Pat LaVarre
0 siblings, 1 reply; 27+ messages in thread
From: Jens Axboe @ 2004-07-31 14:12 UTC (permalink / raw)
To: Pat LaVarre; +Cc: linux-scsi
On Fri, Jul 30 2004, Pat LaVarre wrote:
> Offline a friend reports seeing bytes/CDB of Linux ioctl SG_IO grossly
> limited - like down below 0.000000128 GB/CDB for op x3B "WRITE BUFFER".
Could you have chosen a more awkward way to express that number? I can't
even make sense of it if I try, 0.128 bytes/cdb?! And are you talking
about the length of the cdb, or do you mean the data that it can
send/receive? I'd guess the latter, but then cdb isn't the correct term.
So in short, please try again :-)
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-07-31 14:12 ` Jens Axboe
@ 2004-08-16 17:55 ` Pat LaVarre
2004-08-17 18:07 ` Pat LaVarre
2004-08-23 15:46 ` Jens Axboe
0 siblings, 2 replies; 27+ messages in thread
From: Pat LaVarre @ 2004-08-16 17:55 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-scsi
Jens A:
> in short, please try again :-)
I much appreciate your patient encouragement. I now know I can ask:
Is there an ide-cd option to allow more bytes/CDB?
That is, an option analogous to the /sys/block/sr*/device/max_sectors
setting of usb-storage, allowing up to the xFF:FF LBA's/CDB standard at
t10.org? Else can I help create such an option?
I see ioctl SG_IO chokes via EIO if bytes/CDB goes much above zero.
I ask for a workaround because a friend of mine cares.
I see EIO at 130 KiB/CDB, though happy at 128 KiB/CDB, when I try
ide-cd. I see usb-storage defaults to choke thruput off at 120 KiB/CDB,
but thru /sys lets us reach a little farther above zero i.e. 512
KiB/CDB.
How coordinated is our 2.6 effort to choke off thruput near zero across
PATAPI, USB, FireWire, SPI, SATAPI, etc.?
Is there an ide-cd option to allow more bytes/CDB?
Pat LaVarre
--- tty log
$ uname -msr
Linux 2.6.8.1 i686
$
$ dc -e '120 2 / 16dio 78Pp 800 * 78Pp'
x3C
x1E000
$ dc -e '128 2 / 16dio 78Pp 800 * 78Pp'
x40
x20000
$ dc -e '512 2 / 16dio 78Pp 800 * 78Pp'
x100
x80000
$
$ sudo plscsi -i x1E000 -x "28 00 00:00:00:00 00 00:3C 00" /dev/scd1
$ sudo plscsi -i x1E800 -x "28 00 00:00:00:00 00 00:3D 00" /dev/scd1 2>&1 | grep ioctl:
// sgioSay.ioctl: Input/output error
$ sudo plscsi -i x20000 -x "28 00 00:00:00:00 00 00:40 00" /dev/hdc
$ sudo plscsi -i x20800 -x "28 00 00:00:00:00 00 00:41 00" /dev/hdc 2>&1 | grep ioctl:
// sgioSay.ioctl: Input/output error
$
$ sudo strace plscsi -i x1E000 -x "28 00 00:00:00:00 00 00:3C 00" /dev/scd1 2>&1 | egrep '(open|ioctl)\(' | tail -3
open("/dev/scd1", O_RDONLY|O_NONBLOCK) = 3
ioctl(3, 0x2282, 0xbfffd9dc) = 0
ioctl(3, 0x2285, 0x804f0a8) = 0
$ grep O_RDONLY /usr/include/bits/fcntl.h
#define O_RDONLY 00
$
$ grep . /sys/block/*/device/max_sectors
/sys/block/sr0/device/max_sectors:240
/sys/block/sr1/device/max_sectors:240
$
$ sudo echo 65535 >/sys/block/sr1/device/max_sectors
bash: /sys/block/sr1/device/max_sectors: Permission denied
$ sudo su
# echo 65535 >/sys/block/sr1/device/max_sectors
# grep . /sys/block/*/device/max_sectors
/sys/block/sr0/device/max_sectors:240
/sys/block/sr1/device/max_sectors:240
# echo 1028 >/sys/block/sr1/device/max_sectors
# grep . /sys/block/*/device/max_sectors
/sys/block/sr0/device/max_sectors:240
/sys/block/sr1/device/max_sectors:240
# echo 1024 >/sys/block/sr1/device/max_sectors
# grep . /sys/block/*/device/max_sectors
/sys/block/sr0/device/max_sectors:240
/sys/block/sr1/device/max_sectors:1024
# exit
$
$ sudo plscsi -i x80000 -x "28 00 00:00:00:00 00 01:00 00" /dev/scd1
$ sudo plscsi -i x80800 -x "28 00 00:00:00:00 00 01:01 00" /dev/scd1 2>&1 | grep ioctl:
// sgioSay.ioctl: Input/output error
$
--- how awful my English is
> > Offline a friend reports seeing bytes/CDB of Linux ioctl SG_IO
> > grossly limited - like down below 0.000000128 GB/CDB for op x3B
> > "WRITE BUFFER".
>
> Could you have chosen a more awkward way to express that number?
Numbers near zero are hard to quote, sure.
0.000000128 GB = 0.000128 MB = 0.128 KB, which isn't what I meant.
> I can't even make sense of it if I try, 0.128 bytes/cdb?!
Another source of imprecision is the GiB MiB KiB vs. GB MB KB
distinction.
I meant to say I was hearing that we choke off thruput near 128 KiB/CDB,
but also that 128 KiB/CDB is very near zero when measured in the year
2004, for example 128 KiB/CDB is barely above 0.000000119 GB/CDB.
$ dc -e '33 k 128 1024 / 1024 / 1024 / p'
.000000119209289550781250000000000
$
I was failing to make myself more clear by speaking in the more popular
units of decimal and GB rather than in the more natural units of hex and
GiB.
> And are you talking about the length of the cdb, or do you mean the
> data that it can send/receive? I'd guess the latter,
Yes.
> but then cdb isn't the correct term.
Sorry I don't yet see why this thread doesn't fit into the category of
arbitrary limits on bytes per CDB.
What is the correct linux-scsi jargon for this?
Pat LaVarre
http://linux-pel.blog-city.com/read/752705.htm
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-16 17:55 ` Pat LaVarre
@ 2004-08-17 18:07 ` Pat LaVarre
2004-08-23 15:46 ` Jens Axboe
1 sibling, 0 replies; 27+ messages in thread
From: Pat LaVarre @ 2004-08-17 18:07 UTC (permalink / raw)
To: linux-scsi
> > And are you talking about the length of the cdb, or do you mean the
> > data that it can send/receive? I'd guess the latter,
>
> Yes.
>
> > but then cdb isn't the correct term.
>
> Sorry I don't yet see why this thread doesn't fit into the category of
> arbitrary limits on bytes per CDB.
Kindly offline someone highlighted for me the ambiguity among the
arbitrary limits on the length of command, data, and status bytes
associated with a CDB.
Here I mean to be asking how to retune the arbitrary ide-cd limits on
the length of:
data bytes/CDB of SCSI pass thru
Pat LaVarre
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-16 17:55 ` Pat LaVarre
2004-08-17 18:07 ` Pat LaVarre
@ 2004-08-23 15:46 ` Jens Axboe
2004-08-23 16:05 ` Pat LaVarre
2004-08-23 16:06 ` Jeff Garzik
1 sibling, 2 replies; 27+ messages in thread
From: Jens Axboe @ 2004-08-23 15:46 UTC (permalink / raw)
To: Pat LaVarre; +Cc: linux-scsi
On Mon, Aug 16 2004, Pat LaVarre wrote:
> Jens A:
>
> > in short, please try again :-)
>
> I much appreciate your patient encouragement. I now know I can ask:
>
> Is there an ide-cd option to allow more bytes/CDB?
>
> That is, an option analogous to the /sys/block/sr*/device/max_sectors
> setting of usb-storage, allowing up to the xFF:FF LBA's/CDB standard at
> t10.org? Else can I help create such an option?
>
> I see ioctl SG_IO chokes via EIO if bytes/CDB goes much above zero.
>
> I ask for a workaround because a friend of mine cares.
>
> I see EIO at 130 KiB/CDB, though happy at 128 KiB/CDB, when I try
> ide-cd. I see usb-storage defaults to choke thruput off at 120 KiB/CDB,
> but thru /sys lets us reach a little farther above zero i.e. 512
> KiB/CDB.
>
> How coordinated is our 2.6 effort to choke off thruput near zero across
> PATAPI, USB, FireWire, SPI, SATAPI, etc.?
>
> Is there an ide-cd option to allow more bytes/CDB?
Ok, makes more sense to me now. The reason why I get confused is that I
don't consider the cdb more than the actual 10-16 bytes of command data
bytes, not the full structure of it.
But yes, different devices will have different max transfer values. As
I'm sure you know, ATAPI cannot do more than 128KiB per command. And
that is what q->max_sectors is set to, if you try and submit more than
this through SG_IO, bio_add_user() will complain and command will be
failed as you experienced.
max_sectors should be fully exposed so you don't have to guess.
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 15:46 ` Jens Axboe
@ 2004-08-23 16:05 ` Pat LaVarre
2004-08-23 17:08 ` Jens Axboe
2004-08-23 16:06 ` Jeff Garzik
1 sibling, 1 reply; 27+ messages in thread
From: Pat LaVarre @ 2004-08-23 16:05 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-scsi
Jens A:
>> Is there an ide-cd option to allow more bytes/CDB?
> ...
> ATAPI cannot do more than 128KiB per command. And
> that is what q->max_sectors is set to, if you try and submit more than
> this through SG_IO, bio_add_user() will complain and command will be
> failed as you experienced.
Wow.
Please reply to confirm - you are saying 128 KiB data bytes per command
is a Linux PATAPI design limit?
I know even twelve-byte-packet PATAPI itself as defined at t13.org and
t10.org can do xFFFF = (64 Ki - 1) LBA's via such ten-byte per CDB ops
as x28 "READ (10)" and x2A "WRITE (10)". At 2 KiB/LBA, that's 128 MiB
minus 2 KiB. That's the kind of limit I expected, when instead in
Linux I saw limits like 120 KiB in SCSI over USB. Also I hear
sixteen-byte-packet PATAPI can itself pass xFFFF:FFFF data blocks per
command.
In parallel, I'll click thru to bio_add_user to read the limits there.
> As I'm sure you know,
I didn't know, thank you, sorry I have no clue, I'm not trying to
pretend I do, I got into this at the request of a friend who needs 256
KiB data per command.
I specifically have Not yet tried patching the Linux kernel to persuade
PATAPI to allow more data bytes per command. I did try USB. So far
I've failed. At:
Subject: [usb-storage] faq max_sectors
https://lists.one-eyed-alien.net/pipermail/usb-storage/2004-August/
000680.html
I have reported that raising SCSI_DEFAULT_MAX_SECTORS alone does not
actually allow more data bytes per command in USB.
> max_sectors should be fully exposed so you don't have to guess.
Yes please.
Pat LaVarre
http://linux-pel.blog-city.com/read/752705.htm
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 15:46 ` Jens Axboe
2004-08-23 16:05 ` Pat LaVarre
@ 2004-08-23 16:06 ` Jeff Garzik
2004-08-23 17:05 ` Pat LaVarre
2004-08-23 18:48 ` Luben Tuikov
1 sibling, 2 replies; 27+ messages in thread
From: Jeff Garzik @ 2004-08-23 16:06 UTC (permalink / raw)
To: Jens Axboe; +Cc: Pat LaVarre, linux-scsi
Jens Axboe wrote:
> Ok, makes more sense to me now. The reason why I get confused is that I
> don't consider the cdb more than the actual 10-16 bytes of command data
> bytes, not the full structure of it.
Speaking of which... (WARNING: change of topic; or perhaps, getting
back on topic :))
I would like to see support for CDBs larger than 16 bytes in struct request.
Problem: Would like to support SCSI's variable length CDBs, and support
non-{ATA,SCSI} RAID CDBs which are often larger than 16 bytes, such as
Promise's SX8 (formerly known as carmel).
Suggested solution: Probably this involves adding a flag and a pointer,
rather than increasing the actual CDB buffer size in struct request.
Jeff
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 16:06 ` Jeff Garzik
@ 2004-08-23 17:05 ` Pat LaVarre
2004-08-23 18:48 ` Luben Tuikov
1 sibling, 0 replies; 27+ messages in thread
From: Pat LaVarre @ 2004-08-23 17:05 UTC (permalink / raw)
To: Jeff Garzik; +Cc: linux-scsi
> Speaking of which... (WARNING: change of topic; or perhaps, getting
> back on topic :))
Part of my initial ambiguity is now clear to me. I said max
"bytes/CDB" to mean "max data bytes per CDB", which is more often in
dispute than "max bytes of CDB", which was nonetheless what some of us
thought I meant.
>> Ok, makes more sense to me now. The reason why I get confused is that
>> I
>> don't consider the cdb more than the actual 10-16 bytes of command
>> data
>> bytes, not the full structure of it.
That English doesn't yet make sense to me. I don't know what "the full
structure" is.
I agree CDB and data and status and auto sense all form part of the
bits copied between device and host in each transaction. For the
rendezvous itself I have no clearly appropriate and unambiguous English
term.
I see the word "command" can mean the whole transaction or just the CDB.
I suppose CDB stands for "command data bytes". That expansion doesn't
help, does it? That phrase uses the word "data" in a pointless
redundancy I think - in that context, there are no "bytes" which are
not "data".
> like to see support for CDBs larger than 16 bytes in struct request.
Often xC (12), not even x10 (16), is the CDROM_PACKET_SIZE limit of
struct cdrom_generic_command of include/linux/cdrom.h
My survey at sourceforge.net iomrrdtools rrd iomscsi xscsi.h is:
/* Recommend a limit for the length in bytes of the CDB.
*
* Consider the limits:
*
* xC // common max of SCSI over IDE
* xC // common max of SCSI over 1394 i.e. xC = (x20 - x14)
* xC // seen as max of Linux ioctl CDROM_SEND_PACKET
* x10 // max SCSI over IDE
* x10 // max SCSI over USB
* x10 // max declared SCSI thru Dos Aspi or Win32 Ioctl
* x10 // max SCSI-3 for standard op xXX other than x7F
* xFF // common max of SCSI pass thru
* x104 // max SCSI-3 permits for op x 7F XX XX = 8 + xFC
* x107 // max SCSI-3 expresses for op x 7F XX XX = 8 + xFF
* x3E8 // max SCSI over 1394 = ((xFF * 4) - x14)
*
* Arguably 2001-07 SPC-2 r20: "4.3.3" "The variable length CDB
formats" says
* SK ASC = x 5 24 "ILLEGAL REQUEST" "INVALID FIELD IN CDB" may mean
CDB too
* long to copy out, rather than implying recover by flipping CDB bits.
*/
#define MAX_CDB 0xFF
Pat LaVarre
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 16:05 ` Pat LaVarre
@ 2004-08-23 17:08 ` Jens Axboe
2004-08-23 17:28 ` Pat LaVarre
0 siblings, 1 reply; 27+ messages in thread
From: Jens Axboe @ 2004-08-23 17:08 UTC (permalink / raw)
To: Pat LaVarre; +Cc: linux-scsi
On Mon, Aug 23 2004, Pat LaVarre wrote:
> Jens A:
>
> >>Is there an ide-cd option to allow more bytes/CDB?
> >...
> >ATAPI cannot do more than 128KiB per command. And
> >that is what q->max_sectors is set to, if you try and submit more than
> >this through SG_IO, bio_add_user() will complain and command will be
> >failed as you experienced.
>
> Wow.
>
> Please reply to confirm - you are saying 128 KiB data bytes per command
> is a Linux PATAPI design limit?
>
> I know even twelve-byte-packet PATAPI itself as defined at t13.org and
> t10.org can do xFFFF = (64 Ki - 1) LBA's via such ten-byte per CDB ops
> as x28 "READ (10)" and x2A "WRITE (10)". At 2 KiB/LBA, that's 128 MiB
> minus 2 KiB. That's the kind of limit I expected, when instead in
> Linux I saw limits like 120 KiB in SCSI over USB. Also I hear
> sixteen-byte-packet PATAPI can itself pass xFFFF:FFFF data blocks per
> command.
What you can shove into the cdb is of lesser interest than the fact that
ATAPI itself cannot do more than 128KiB _per command_.
> In parallel, I'll click thru to bio_add_user to read the limits there.
There are no extra limits there, it's just in the queue itself
(max_sectors, segments, etc).
> >As I'm sure you know,
>
> I didn't know, thank you, sorry I have no clue, I'm not trying to
> pretend I do, I got into this at the request of a friend who needs 256
> KiB data per command.
??? You must have some clue on the actual hardware, if you have been
working on the hardware side for many years :-)
> I specifically have Not yet tried patching the Linux kernel to persuade
> PATAPI to allow more data bytes per command. I did try USB. So far
> I've failed. At:
>
> Subject: [usb-storage] faq max_sectors
> https://lists.one-eyed-alien.net/pipermail/usb-storage/2004-August/
> 000680.html
>
> I have reported that raising SCSI_DEFAULT_MAX_SECTORS alone does not
> actually allow more data bytes per command in USB.
Ok, let me try to explain. There are several factors that limit how big
a command you can send to a device - some of these are hardware, some of
these are just imposed by the driver. If you look inside the
request_queue structure in blkdev.h, you'll find such things as:
unsigned short max_sectors;
unsigned short max_phys_segments;
unsigned short max_hw_segments;
unsigned int max_segment_size;
which are set by the driver and limit how big a request you can submit
through SG_IO.
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 17:08 ` Jens Axboe
@ 2004-08-23 17:28 ` Pat LaVarre
2004-08-23 18:17 ` Jens Axboe
0 siblings, 1 reply; 27+ messages in thread
From: Pat LaVarre @ 2004-08-23 17:28 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-scsi
Jens A:
> What you can shove into the cdb is of lesser interest than the fact
> that
> ATAPI itself cannot do more than
Yes.
> the request_queue structure in blkdev.h, you'll find such things as:
>
> unsigned short max_sectors;
> unsigned short max_phys_segments;
> unsigned short max_hw_segments;
> unsigned int max_segment_size;
>
> which are set by the driver and limit how big a request you can submit
> through SG_IO.
I will return to study this further.
Sorry I still do not yet immediately understand precisely who is
limiting what.
I do not see how these 16 and 32 bit limits correspond to a 128 KiB
limit on how many bytes of data may accompany a CDB. Instead I see:
(1 << (4 + 16)) is 1 Mi.
(1 << (9 + 16)) is 32 Mi.
(1 << (11 + 16)) is 128 Mi.
(1 << 9) is 0.5 Ki, often = B/LBA of HDD
(1 << 11) is 2 Ki, often = B/LBA of DVD/CD.
(1 << 12) is 4 Ki, often = B/page of x86 virtual memory
(1 << 16) is 64 Ki.
(1 << 32) is 4 Ti.
No 128 Ki anywhere.
> What you can shove into the cdb is of lesser interest than the fact
> that
> ATAPI itself cannot do more than 128KiB _per command_.
Possibly I have misunderstood what is "ATAPI itself"?
The PIO and DMA I know in PATAPI do not limit data bytes per command.
Even PIO limits only data bytes per DRQ, not per command.
I think PATAPI itself is the standard launched by SFF 8020i that
appears now at ANSI/ NCITS t13.org. I see that standard as a transport
for SCSI over IDE, with no definite limit on data per command, though
arguably the UDMA CRC may grow less reliable if the host and device
neglect to cooperate to insert such CRC often into the data.
I see PATAPI does limit max bytes of CDB, to 16 (x10) else to 12 (xC),
by neglecting to enumerate any other CDB-containing packet lengths for
the op xA1 "IDENTIFY" data to request.
Pat LaVarre
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 17:28 ` Pat LaVarre
@ 2004-08-23 18:17 ` Jens Axboe
2004-08-26 23:20 ` Pat LaVarre
0 siblings, 1 reply; 27+ messages in thread
From: Jens Axboe @ 2004-08-23 18:17 UTC (permalink / raw)
To: Pat LaVarre; +Cc: linux-scsi
On Mon, Aug 23 2004, Pat LaVarre wrote:
> Jens A:
>
> >What you can shove into the cdb is of lesser interest than the fact
> >that
> >ATAPI itself cannot do more than
>
> Yes.
>
> >the request_queue structure in blkdev.h, you'll find such things as:
> >
> > unsigned short max_sectors;
> > unsigned short max_phys_segments;
> > unsigned short max_hw_segments;
> > unsigned int max_segment_size;
> >
> >which are set by the driver and limit how big a request you can submit
> >through SG_IO.
>
> I will return to study this further.
>
> Sorry I still do not yet immediately understand precisely who is
> limiting what.
>
> I do not see how these 16 and 32 bit limits correspond to a 128 KiB
> limit on how many bytes of data may accompany a CDB. Instead I see:
>
> (1 << (4 + 16)) is 1 Mi.
> (1 << (9 + 16)) is 32 Mi.
> (1 << (11 + 16)) is 128 Mi.
>
> (1 << 9) is 0.5 Ki, often = B/LBA of HDD
> (1 << 11) is 2 Ki, often = B/LBA of DVD/CD.
> (1 << 12) is 4 Ki, often = B/page of x86 virtual memory
> (1 << 16) is 64 Ki.
> (1 << 32) is 4 Ti.
>
> No 128 Ki anywhere.
>
> >What you can shove into the cdb is of lesser interest than the fact
> >that
> >ATAPI itself cannot do more than 128KiB _per command_.
>
> Possibly I have misunderstood what is "ATAPI itself"?
>
> The PIO and DMA I know in PATAPI do not limit data bytes per command.
> Even PIO limits only data bytes per DRQ, not per command.
>
> I think PATAPI itself is the standard launched by SFF 8020i that
> appears now at ANSI/ NCITS t13.org. I see that standard as a transport
> for SCSI over IDE, with no definite limit on data per command, though
> arguably the UDMA CRC may grow less reliable if the host and device
> neglect to cooperate to insert such CRC often into the data.
>
> I see PATAPI does limit max bytes of CDB, to 16 (x10) else to 12 (xC),
> by neglecting to enumerate any other CDB-containing packet lengths for
> the op xA1 "IDENTIFY" data to request.
Sorry my clowning around, I'm too ATA damaged. You can play with bigger
transfers with something ala this applied, will allow you to pass in <=
512KiB/command.
===== drivers/ide/ide-cd.c 1.89 vs edited =====
--- 1.89/drivers/ide/ide-cd.c 2004-08-13 02:03:53 +02:00
+++ edited/drivers/ide/ide-cd.c 2004-08-23 20:15:52 +02:00
@@ -3138,6 +3138,7 @@
blk_queue_prep_rq(drive->queue, ide_cdrom_prep_fn);
blk_queue_dma_alignment(drive->queue, 31);
+ blk_queue_max_sectors(drive->queue, 1024);
drive->queue->unplug_delay = (1 * HZ) / 1000;
if (!drive->queue->unplug_delay)
drive->queue->unplug_delay = 1;
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 16:06 ` Jeff Garzik
2004-08-23 17:05 ` Pat LaVarre
@ 2004-08-23 18:48 ` Luben Tuikov
2004-08-23 19:06 ` Jeff Garzik
1 sibling, 1 reply; 27+ messages in thread
From: Luben Tuikov @ 2004-08-23 18:48 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Jens Axboe, Pat LaVarre, linux-scsi
> I would like to see support for CDBs larger than 16 bytes in struct
> request.
>
> Problem: Would like to support SCSI's variable length CDBs, and support
> non-{ATA,SCSI} RAID CDBs which are often larger than 16 bytes, such as
> Promise's SX8 (formerly known as carmel).
>
> Suggested solution: Probably this involves adding a flag and a pointer,
> rather than increasing the actual CDB buffer size in struct request.
Not sure that you need a flag.
Op. code 0x7F implies (cdb->acdb != 0 && cdb[7] > 0), else bug.
Luben
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 18:48 ` Luben Tuikov
@ 2004-08-23 19:06 ` Jeff Garzik
2004-08-23 19:14 ` Luben Tuikov
0 siblings, 1 reply; 27+ messages in thread
From: Jeff Garzik @ 2004-08-23 19:06 UTC (permalink / raw)
To: Luben Tuikov; +Cc: Jens Axboe, Pat LaVarre, linux-scsi
Luben Tuikov wrote:
>> I would like to see support for CDBs larger than 16 bytes in struct
>> request.
>>
>> Problem: Would like to support SCSI's variable length CDBs, and support
>> non-{ATA,SCSI} RAID CDBs which are often larger than 16 bytes, such as
>> Promise's SX8 (formerly known as carmel).
>>
>> Suggested solution: Probably this involves adding a flag and a pointer,
>> rather than increasing the actual CDB buffer size in struct request.
>
>
> Not sure that you need a flag.
> Op. code 0x7F implies (cdb->acdb != 0 && cdb[7] > 0), else bug.
At the struct request level a flag is needed. A "CDB" may be a SCSI
CDB, an ATA taskfile, an I2O command, etc. The block layer must treat
any cdb buffer as an anonymous blob that gets passed through to a lower
layer.
Jeff
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 19:06 ` Jeff Garzik
@ 2004-08-23 19:14 ` Luben Tuikov
0 siblings, 0 replies; 27+ messages in thread
From: Luben Tuikov @ 2004-08-23 19:14 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Jens Axboe, Pat LaVarre, linux-scsi
Jeff Garzik wrote:
> At the struct request level a flag is needed. A "CDB" may be a SCSI
> CDB, an ATA taskfile, an I2O command, etc. The block layer must treat
> any cdb buffer as an anonymous blob that gets passed through to a lower
> layer.
Ah, yes, that's true -- I missed the fact that you were talking
considering the flag at the struct request level.
Luben
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-23 18:17 ` Jens Axboe
@ 2004-08-26 23:20 ` Pat LaVarre
0 siblings, 0 replies; 27+ messages in thread
From: Pat LaVarre @ 2004-08-26 23:20 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-scsi
Jens A:
> You can play with bigger transfers with something ala this applied,
> will allow you to pass in <= 512KiB/command.
Exactly what we needed, thank you. As quoted below, I immediately found
I could run up as far as 1 MiB = 2048 * 512 bytes, no worries.
Any chance of a max_sectors setting appearing in /sys for ide-cd ATAPI =
SCSI over IDE, like we have already for SCSI over USB and SCSI over
FireWire?
> ATA damaged.
I remember ATA has a max_sectors of about xFF (255) in the 28-bit LBA
protocol, only the new 48-bit protocol allows xFFFF (65535). Much
theory argues that x00 and x0000 should represent x100 and x10000, but
hosts often don't take that risk.
Pat LaVarre
+++ linux-2.6.9-rc1-bk2-pel/drivers/ide/ide-cd.c 2004-08-26 17:08:52.944300264 -0600
@@ -3142,6 +3142,7 @@ int ide_cdrom_setup (ide_drive_t *drive)
blk_queue_prep_rq(drive->queue, ide_cdrom_prep_fn);
blk_queue_dma_alignment(drive->queue, 31);
+ blk_queue_max_sectors(drive->queue, 2048);
drive->queue->unplug_delay = (1 * HZ) / 1000;
if (!drive->queue->unplug_delay)
drive->queue->unplug_delay = 1;
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
[not found] <A8E06BE4-F7BA-11D8-AC6B-00039398BB5E@ieee.org>
[not found] ` <Pine.LNX.4.44L0 .0408271100590.1238-100000@ida.rowland.org>
@ 2004-08-27 15:09 ` Alan Stern
2004-08-28 14:31 ` Jens Axboe
1 sibling, 1 reply; 27+ messages in thread
From: Alan Stern @ 2004-08-27 15:09 UTC (permalink / raw)
To: Jens Axboe; +Cc: Pat LaVarre, SCSI development list
On Mon, Aug 23 2004, Jens Axboe wrote:
> Ok, let me try to explain. There are several factors that limit how big
> a command you can send to a device - some of these are hardware, some of
> these are just imposed by the driver. If you look inside the
> request_queue structure in blkdev.h, you'll find such things as:
>
> unsigned short max_sectors;
> unsigned short max_phys_segments;
> unsigned short max_hw_segments;
> unsigned int max_segment_size;
>
> which are set by the driver and limit how big a request you can submit
> through SG_IO.
Is it then correct to say that max_sectors is limited only by the
capabilities of the low-level driver and the hardware? So that within
usb-storage, for example, where the protocol only limits us to 4 GB per
transfer, there would be no problem allowing max_sectors to go as high as
65535?
I wasn't sure whether there were any other limitations somewhere else in
the block layer, so for now in usb-storage max_sectors is capped at
SCSI_DEFAULT_MAX_SECTORS = 1024. Allowing it to increase by almost a
factor of 64 could remove a lot of latency.
Alan Stern
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-27 15:09 ` Alan Stern
@ 2004-08-28 14:31 ` Jens Axboe
2004-08-28 15:14 ` Alan Stern
2004-08-28 17:51 ` James Bottomley
0 siblings, 2 replies; 27+ messages in thread
From: Jens Axboe @ 2004-08-28 14:31 UTC (permalink / raw)
To: Alan Stern; +Cc: Pat LaVarre, SCSI development list
On Fri, Aug 27 2004, Alan Stern wrote:
> On Mon, Aug 23 2004, Jens Axboe wrote:
>
> > Ok, let me try to explain. There are several factors that limit how big
> > a command you can send to a device - some of these are hardware, some of
> > these are just imposed by the driver. If you look inside the
> > request_queue structure in blkdev.h, you'll find such things as:
> >
> > unsigned short max_sectors;
> > unsigned short max_phys_segments;
> > unsigned short max_hw_segments;
> > unsigned int max_segment_size;
> >
> > which are set by the driver and limit how big a request you can submit
> > through SG_IO.
>
> Is it then correct to say that max_sectors is limited only by the
> capabilities of the low-level driver and the hardware? So that within
Yes
> usb-storage, for example, where the protocol only limits us to 4 GB per
> transfer, there would be no problem allowing max_sectors to go as high as
> 65535?
If the hardware and driver can handle it, there's no other limit.
> I wasn't sure whether there were any other limitations somewhere else in
> the block layer, so for now in usb-storage max_sectors is capped at
> SCSI_DEFAULT_MAX_SECTORS = 1024. Allowing it to increase by almost a
> factor of 64 could remove a lot of latency.
How do you come to that conclusion? 1024 is probably a fine value,
usually there's very little benefit to going higher than that (since
huge requests on slower hardware increases latency quite a lot, and huge
requests only provide little (if any) throughput increase on fast
hardware).
That said, it still wants splitting into two before you should go
higher.
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 14:31 ` Jens Axboe
@ 2004-08-28 15:14 ` Alan Stern
2004-08-28 15:36 ` Jens Axboe
2004-08-28 17:51 ` James Bottomley
1 sibling, 1 reply; 27+ messages in thread
From: Alan Stern @ 2004-08-28 15:14 UTC (permalink / raw)
To: Jens Axboe; +Cc: Pat LaVarre, SCSI development list
On Sat, 28 Aug 2004, Jens Axboe wrote:
> > I wasn't sure whether there were any other limitations somewhere else in
> > the block layer, so for now in usb-storage max_sectors is capped at
> > SCSI_DEFAULT_MAX_SECTORS = 1024. Allowing it to increase by almost a
> > factor of 64 could remove a lot of latency.
>
> How do you come to that conclusion? 1024 is probably a fine value,
> usually there's very little benefit to going higher than that (since
> huge requests on slower hardware increases latency quite a lot, and huge
> requests only provide little (if any) throughput increase on fast
> hardware).
Actually I have no basis for saying there will be any significant benefit
from going higher than 1024. Pat LaVarre is interested in trying higher
values, that's all.
> That said, it still wants splitting into two before you should go
> higher.
I don't understand. What needs to be split into two? And why?
Alan Stern
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 15:14 ` Alan Stern
@ 2004-08-28 15:36 ` Jens Axboe
0 siblings, 0 replies; 27+ messages in thread
From: Jens Axboe @ 2004-08-28 15:36 UTC (permalink / raw)
To: Alan Stern; +Cc: Pat LaVarre, SCSI development list
On Sat, Aug 28 2004, Alan Stern wrote:
> > That said, it still wants splitting into two before you should go
> > higher.
>
> I don't understand. What needs to be split into two? And why?
See earlier discussion on this field - it needs to be split into a 'max
hardware/driver supported value' and a 'optimal real life value' where
the latter could be controlled dynamically by looking at response and
completion times of requests.
Right now ->max_sectors is a grey area, sometimes it's a hardware/driver
limit, often it is not. But we have to treat it as such for now.
Jens
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 14:31 ` Jens Axboe
2004-08-28 15:14 ` Alan Stern
@ 2004-08-28 17:51 ` James Bottomley
2004-08-28 17:55 ` Jens Axboe
1 sibling, 1 reply; 27+ messages in thread
From: James Bottomley @ 2004-08-28 17:51 UTC (permalink / raw)
To: Jens Axboe; +Cc: Alan Stern, Pat LaVarre, SCSI development list
On Sat, 2004-08-28 at 10:31, Jens Axboe wrote:
> > usb-storage, for example, where the protocol only limits us to 4 GB per
> > transfer, there would be no problem allowing max_sectors to go as high as
> > 65535?
>
> If the hardware and driver can handle it, there's no other limit.
Actually, if you go through the SCSI stack, you're limited by our SG
list slot allocation which we use a mempool for. The default maximum is
128, although there's an option to increase this to 256.
These slots are the number of entries in the SG list we allow. If your
driver disables clustering, and you havea no IOMMU, this limits you to
128*<page size> = 512kb on x86 bytes. Otherwise, it can go higher
depending on the HW capabilities. Remember too that a lot of HW limits
the number of SG slots (see the sg_tablesize entry for each driver).
James
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 17:51 ` James Bottomley
@ 2004-08-28 17:55 ` Jens Axboe
2004-08-28 18:20 ` James Bottomley
0 siblings, 1 reply; 27+ messages in thread
From: Jens Axboe @ 2004-08-28 17:55 UTC (permalink / raw)
To: James Bottomley; +Cc: Alan Stern, Pat LaVarre, SCSI development list
On Sat, Aug 28 2004, James Bottomley wrote:
> On Sat, 2004-08-28 at 10:31, Jens Axboe wrote:
> > > usb-storage, for example, where the protocol only limits us to 4 GB per
> > > transfer, there would be no problem allowing max_sectors to go as high as
> > > 65535?
> >
> > If the hardware and driver can handle it, there's no other limit.
>
> Actually, if you go through the SCSI stack, you're limited by our SG
> list slot allocation which we use a mempool for. The default maximum is
> 128, although there's an option to increase this to 256.
>
> These slots are the number of entries in the SG list we allow. If your
> driver disables clustering, and you havea no IOMMU, this limits you to
> 128*<page size> = 512kb on x86 bytes. Otherwise, it can go higher
> depending on the HW capabilities. Remember too that a lot of HW limits
> the number of SG slots (see the sg_tablesize entry for each driver).
Oh yes, I know. bio layer has similar limits, there are no bio_io_vec
entries for > 256 pages. Should have made that more clear, sorry. The sg
table limits are reflected in the queue.
Probably bio and SCSI should use a unified MAX_PAGES define, there's not
much point in bio setting up a 256 page bio_io_vec slab and mempool, if
noone can use it.
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 17:55 ` Jens Axboe
@ 2004-08-28 18:20 ` James Bottomley
2004-08-28 18:41 ` Jens Axboe
0 siblings, 1 reply; 27+ messages in thread
From: James Bottomley @ 2004-08-28 18:20 UTC (permalink / raw)
To: Jens Axboe; +Cc: Alan Stern, Pat LaVarre, SCSI development list
On Sat, 2004-08-28 at 13:55, Jens Axboe wrote:
> Probably bio and SCSI should use a unified MAX_PAGES define, there's not
> much point in bio setting up a 256 page bio_io_vec slab and mempool, if
> noone can use it.
Sure, ours is SCSI_MAX_PHYS_SEGMENTS ... by default, we just use
MAX_PHYS_SEGMENTS from the bio headers for this, which is 128, we could
set this to BIO_MAX_PAGES, sure.
We allow values of 32,64,128 and 256 (the smaller ones were for tiny
systems with SCSI stacks), the largest one for SGI/Qlogic.
However, I did ask the IBM spearker at OLS who was doing the elevator
analysis to retry with 256 instead of 128, and he reported no difference
within error, so I don't think there's much evidence that 256 actually
does anything useful (other than consume a bit of spare memory).
James
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 18:20 ` James Bottomley
@ 2004-08-28 18:41 ` Jens Axboe
2004-08-29 13:34 ` James Bottomley
0 siblings, 1 reply; 27+ messages in thread
From: Jens Axboe @ 2004-08-28 18:41 UTC (permalink / raw)
To: James Bottomley; +Cc: Alan Stern, Pat LaVarre, SCSI development list
On Sat, Aug 28 2004, James Bottomley wrote:
> On Sat, 2004-08-28 at 13:55, Jens Axboe wrote:
> > Probably bio and SCSI should use a unified MAX_PAGES define, there's not
> > much point in bio setting up a 256 page bio_io_vec slab and mempool, if
> > noone can use it.
>
> Sure, ours is SCSI_MAX_PHYS_SEGMENTS ... by default, we just use
> MAX_PHYS_SEGMENTS from the bio headers for this, which is 128, we could
> set this to BIO_MAX_PAGES, sure.
>
> We allow values of 32,64,128 and 256 (the smaller ones were for tiny
> systems with SCSI stacks), the largest one for SGI/Qlogic.
>
> However, I did ask the IBM spearker at OLS who was doing the elevator
> analysis to retry with 256 instead of 128, and he reported no difference
> within error, so I don't think there's much evidence that 256 actually
> does anything useful (other than consume a bit of spare memory).
Since SCSI doesn't build > 128 pages anyways, yes it doesn't make sense
to maintain a BIO_MAX_PAGES of 256. Didn't the SCSI part used to be 256
pages as well, I'm pretty sure that's what I put in when the
scsi_malloc() crud was dumped?
bio has 1, 4, 16, 64, 128, 256 pools. 32 might make more sense, I seem
to recall mpages using that. I'll see if I can sneak a BIO_MAX_PAGES
reduction in, and spend that extra pool on 32 instead :)
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-28 18:41 ` Jens Axboe
@ 2004-08-29 13:34 ` James Bottomley
2004-08-29 13:45 ` Jens Axboe
0 siblings, 1 reply; 27+ messages in thread
From: James Bottomley @ 2004-08-29 13:34 UTC (permalink / raw)
To: Jens Axboe; +Cc: Alan Stern, Pat LaVarre, SCSI development list
On Sat, 2004-08-28 at 14:41, Jens Axboe wrote:
> Since SCSI doesn't build > 128 pages anyways, yes it doesn't make sense
> to maintain a BIO_MAX_PAGES of 256. Didn't the SCSI part used to be 256
Agreed.
> pages as well, I'm pretty sure that's what I put in when the
> scsi_malloc() crud was dumped?
I don't think so. I only looked at it about six months ago when SGI
wanted better merging for qla. There was quite a bit of work to get the
maximum to be 256.
> bio has 1, 4, 16, 64, 128, 256 pools. 32 might make more sense, I seem
> to recall mpages using that. I'll see if I can sneak a BIO_MAX_PAGES
> reduction in, and spend that extra pool on 32 instead :)
OK I'll follow whatever you do in SCSI. I think at least aligning all
of our pool maximums is the correct thing to do.
James
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-29 13:34 ` James Bottomley
@ 2004-08-29 13:45 ` Jens Axboe
2004-08-30 18:15 ` Pat LaVarre
0 siblings, 1 reply; 27+ messages in thread
From: Jens Axboe @ 2004-08-29 13:45 UTC (permalink / raw)
To: James Bottomley; +Cc: Alan Stern, Pat LaVarre, SCSI development list
On Sun, Aug 29 2004, James Bottomley wrote:
> On Sat, 2004-08-28 at 14:41, Jens Axboe wrote:
> > Since SCSI doesn't build > 128 pages anyways, yes it doesn't make sense
> > to maintain a BIO_MAX_PAGES of 256. Didn't the SCSI part used to be 256
>
> Agreed.
>
> > pages as well, I'm pretty sure that's what I put in when the
> > scsi_malloc() crud was dumped?
>
> I don't think so. I only looked at it about six months ago when SGI
> wanted better merging for qla. There was quite a bit of work to get the
> maximum to be 256.
Probably a bad recollection on my part.
> > bio has 1, 4, 16, 64, 128, 256 pools. 32 might make more sense, I seem
> > to recall mpages using that. I'll see if I can sneak a BIO_MAX_PAGES
> > reduction in, and spend that extra pool on 32 instead :)
>
> OK I'll follow whatever you do in SCSI. I think at least aligning all
> of our pool maximums is the correct thing to do.
Definitely. I'll toss something out.
--
Jens Axboe
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-29 13:45 ` Jens Axboe
@ 2004-08-30 18:15 ` Pat LaVarre
2004-09-01 15:20 ` Pat LaVarre
0 siblings, 1 reply; 27+ messages in thread
From: Pat LaVarre @ 2004-08-30 18:15 UTC (permalink / raw)
To: Alan Stern; +Cc: SCSI development list, Jens Axboe, James Bottomley
Alan S:
>>> bio has 1, 4, 16, 64, 128, 256 pools. 32 might make more sense, I
>>> seem
>>> to recall mpages using that. I'll see if I can sneak a BIO_MAX_PAGES
>>> reduction in, and spend that extra pool on 32 instead :)
>>
>> OK I'll follow whatever you do in SCSI. I think at least aligning all
>> of our pool maximums is the correct thing to do.
>
> Definitely. I'll toss something out.
Delighted to see people volunteer work, of course ...
If we're next going to see smaller or larger limits on data bytes per
CDB, I do not yet know, sorry.
> Actually I have no basis for saying there will be any significant
> benefit
> from going higher than 1024. Pat LaVarre is interested in trying
> higher
> values, that's all.
I think, by changing the host, we'll discover devices that care: maybe
especially in the mass market low end.
What I know is that in bus traces I see "streaming" fail: I see the
host and device do Not always keep pace with each other, instead I see
injected delays of a whole disc revolution. For example, I see
14.2857~ms/rev = 70 rev/s = 4200 RPM injected for a device that spins
at 4200 RPM.
That's a concrete anecdote of pain. My guess of an explanation is that
we exceeded the margin in the system design. The margin I mean is the
time allowed for the overhead of getting from status in to the next
command out. Shattering a stream of gigabytes into microscopic 64
kebibyte chunks multiplies the time overhead involved from status in to
command out, by the number of chunks.
How do we predict when that large multiplier exceeds the margin
available, except by trying?
I agree the device and the host both have to change to observe a
difference. Changing either alone gives the I-say-false impression of
having achieved no effect. For example, if we try an HDD with hardware
that splices the chunks back together into a stream, so long as the
system can burst data much more rapidly than the stream rate we're
trying to sustain, our thruput survives the abuse of microscopic
chunks. But we're also all paying for hardware we don't actually need.
> interested in trying higher values, ...
I know SCSI over whatever, when coded entirely in software, as is
common for USB/ FireWire/ PATAPI/ SATAPI/ etc., has no inherent limit
on time or data per CDB. Only the accelerator engine in a PCI adapter
enforces irritating rules like pinning all data in memory before the
command begins. USB & FireWire do have summary descriptors for the
command that limit data length, but not sharply, for example the USB
limit is 31 or 32 bits i.e. 2 to 4 GiB - 1 B. PATAPI & SATAPI have no
limit whatsoever, though moving more data may for the first time test
more than one UDMA CRC per CDB.
> interested in trying higher values, ...
I know I'll benefit if we get up to and beyond 1 MiB of data per CDB
because,
I want to encourage ever more device developers to switch to Linux and
free & open drivers from proprietary systems that can pass all of free
memory per CDB.
SCSI-over-whatever device developers occasionally want as much as 128
MiB per CDB, merely to exercise the standard test case of xFFFF LBA's
in op x28 "READ (10") or op x2A "WRITE (10)", which at 2 KiB/LBA is 128
MiB - 2 KiB. Without such permission, they have to resort to arguing
that testing less is the equal of testing more.
Pat LaVarre
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: bytes/CDB of SCSI pass thru grossly limited maybe
2004-08-30 18:15 ` Pat LaVarre
@ 2004-09-01 15:20 ` Pat LaVarre
0 siblings, 0 replies; 27+ messages in thread
From: Pat LaVarre @ 2004-09-01 15:20 UTC (permalink / raw)
To: Alan Stern; +Cc: linux-scsi, Jens Axboe, James Bottomley
Alan S:
> > interested in trying higher values, ...
>
> a) whole revolution delays seen in bus traces
> b) no limit below 2 to 4 GiB in the standard for the bus
> c) device developers need xFFFF blocks per CDB
Also,
d) experience of lower values
I see usb-storage.ko runs 3X slow like ub.ko does if I ask to choke off
usb-storage at 4 KiB/CDB, same as ub.ko gives me by default today.
That is, we visibly run out of margin to allow for pointlessly
shattering streams into microscopic fragments at values maybe not far
enough from our max.
Pat LaVarre
$ sudo blockdev --flushbufs /dev/uba
BLKFLSBUF: Inappropriate ioctl for device
$ time sudo dd if=/dev/uba bs=64K skip=0 count=3200 >/dev/null
3200+0 records in
3200+0 records out
real 0m26.481s
user 0m0.007s
sys 0m0.598s
$
$ modprobe -r ub
$ modprobe usb-storage
$
$ ln -s /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:2.0/host1/1:0:0:0/max_sectors .
$ echo 240 | sudo dd of=max_sectors
0+1 records in
0+1 records out
$ cat max_sectors
240
$ sudo blockdev --flushbufs /dev/scd0
$ time sudo dd if=/dev/scd0 bs=1M skip=0 count=200 >/dev/null
200+0 records in
200+0 records out
real 0m8.420s
user 0m0.006s
sys 0m0.630s
$
$ echo 8 | sudo dd of=max_sectors
0+1 records in
0+1 records out
$ cat max_sectors
8
$ sudo blockdev --flushbufs /dev/scd0
$ time sudo dd if=/dev/scd0 bs=1M skip=0 count=200 >/dev/null
200+0 records in
200+0 records out
real 0m27.464s
user 0m0.002s
sys 0m0.766s
$
$ rm max_sectors
$
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2004-09-01 15:21 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-30 23:04 bytes/CDB of SCSI pass thru grossly limited maybe Pat LaVarre
2004-07-31 14:12 ` Jens Axboe
2004-08-16 17:55 ` Pat LaVarre
2004-08-17 18:07 ` Pat LaVarre
2004-08-23 15:46 ` Jens Axboe
2004-08-23 16:05 ` Pat LaVarre
2004-08-23 17:08 ` Jens Axboe
2004-08-23 17:28 ` Pat LaVarre
2004-08-23 18:17 ` Jens Axboe
2004-08-26 23:20 ` Pat LaVarre
2004-08-23 16:06 ` Jeff Garzik
2004-08-23 17:05 ` Pat LaVarre
2004-08-23 18:48 ` Luben Tuikov
2004-08-23 19:06 ` Jeff Garzik
2004-08-23 19:14 ` Luben Tuikov
[not found] <A8E06BE4-F7BA-11D8-AC6B-00039398BB5E@ieee.org>
[not found] ` <Pine.LNX.4.44L0 .0408271100590.1238-100000@ida.rowland.org>
2004-08-27 15:09 ` Alan Stern
2004-08-28 14:31 ` Jens Axboe
2004-08-28 15:14 ` Alan Stern
2004-08-28 15:36 ` Jens Axboe
2004-08-28 17:51 ` James Bottomley
2004-08-28 17:55 ` Jens Axboe
2004-08-28 18:20 ` James Bottomley
2004-08-28 18:41 ` Jens Axboe
2004-08-29 13:34 ` James Bottomley
2004-08-29 13:45 ` Jens Axboe
2004-08-30 18:15 ` Pat LaVarre
2004-09-01 15:20 ` Pat LaVarre
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).