From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>,
Aegis Lin <aegislin@gmail.com>,
Masakazu Mokuno <Masakazu_Mokuno@hq.scei.sony.co.jp>,
Cell Broadband Engine OSS Development <cbe-oss-dev@ozlabs.org>,
linux-scsi@vger.kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, Jens Axboe <jens.axboe@oracle.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [Cbe-oss-dev] [PATCH] ps3rom: sector size should be 512 bytes
Date: Thu, 31 Jan 2008 11:53:51 -0600 [thread overview]
Message-ID: <1201802031.3131.29.camel@localhost.localdomain> (raw)
In-Reply-To: <1201800489.11265.134.camel@haakon2.linux-iscsi.org>
On Thu, 2008-01-31 at 09:28 -0800, Nicholas A. Bellinger wrote:
> On Thu, 2008-01-31 at 10:26 -0600, James Bottomley wrote:
> > On Thu, 2008-01-31 at 08:10 -0800, Nicholas A. Bellinger wrote:
> > > On Thu, 2008-01-31 at 09:34 -0600, James Bottomley wrote:
> > > > On Thu, 2008-01-31 at 06:10 -0800, Nicholas A. Bellinger wrote:
> > > > > Greetings Geert and Co,
> > > > >
> > > > > I have a related patch that I have been using with ps3rom.c for some
> > > > > time that fixes a bug in fs/bio.c that assumes 512 byte sectors for
> > > > > ATAPI operations. This bug actually exists for all non 512 byte sector
> > > > > devices go through this code path (I found it with
> > > > > scsi_execute_async()), but I first ran into this issue with ps3rom.c
> > > > > because max_sectors (32) is small enough to trigger the bug assuming 512
> > > > > byte sectors during typical ATAPI READ_10 ops with iSCSI/HD. Because
> > > > > typical max_sector settings for libata and USB are much higher, I have
> > > > > never ran into this issue outside of ps3rom.c, but the bug exists
> > > > > nevertheless..
> > > > >
> > > > > The current patch assumes 512 byte sectors, and adds a sector_size
> > > > > parameter to drivers/scsi/scsi_lib.c:scsi_req_map_sg() to change it for
> > > > > passed struct request. I know that some folks talked about killing
> > > > > scsi_execute_async() and fixing this problem elsewhere, but until then
> > > > > please consider this patch. Any input is also appreciated.
> > > >
> > > > My first reaction is really, no; there's no way we should be doing such
> > > > a nasty layering violation.
> > > >
> > >
> > > I don't care for it either, but without this patch (or something
> > > similar) all SCSI targets that use scsi_execute_async(), for non 512
> > > byte requests are broken. This causes a problem when a small max_sector
> > > is correctly used by the LLD, and trips the check in
> > > fs/bio.c:__bio_add_page()
> > >
> > > if (((bio->bi_size + len) >> 9) > max_sectors)
> > >
> >
> > Could we rewind this discussion back to an actual problem description
> > then, please? Nothing in the standard path for a CD/DVD should be using
> > scsi_execute_async(), what's the actual problem use case?
> >
>
> The problem case is a SCSI Target Mode engine that receives a 2048 Byte
> single sector ATAPI READ_10 request from the storage fabric, and uses
> scsi_execute_async() (the only option >= 2.6.18) to issue said request
> to the underlying struct scsi_device. Because the underlying bio code
> assumes 512 byte only sectors, the check in __bio_add_page() incorrectly
> determines that max_sectors (max_sectors has to be low, as with 32 from
> ps3rom.c) has been exceeded, and fails the request back up the stack.
OK, so this is a totally separate issue from the one you actually posted
it as a patch to fix?
the queue max_sectors parameter is also counted in the block internal of
512 byte sectors. If you set it to 32 that means you were only
expecting 16k of transfers per command maximum. If that's not right,
then set the limit correctly.
In short, and to repeat: almost every internal size counter to block is
in units of 512 byte sectors ... that includes capacity, maximum etc ...
James
next prev parent reply other threads:[~2008-01-31 17:53 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <dc3abf350801290318u66474599n2f293832373f3706@mail.gmail.com>
2008-01-31 13:28 ` [Cbe-oss-dev] [PATCH] ps3rom: sector size should be 512 bytes Geert Uytterhoeven
2008-01-31 14:10 ` Nicholas A. Bellinger
2008-01-31 15:34 ` James Bottomley
2008-01-31 16:10 ` Nicholas A. Bellinger
2008-01-31 16:26 ` James Bottomley
2008-01-31 17:28 ` Nicholas A. Bellinger
2008-01-31 17:41 ` Geert Uytterhoeven
2008-01-31 18:06 ` James Bottomley
2008-01-31 18:48 ` Geert Uytterhoeven
2008-01-31 17:53 ` James Bottomley [this message]
2008-01-31 18:44 ` Nicholas A. Bellinger
2008-01-31 19:14 ` Geert Uytterhoeven
2008-02-01 5:01 ` Nicholas A. Bellinger
2008-01-31 19:42 ` James Bottomley
2008-02-01 1:58 ` Update SCSI documentation for 512 byte sector requirement with max_sectors Nicholas A. Bellinger
2008-02-01 2:46 ` Randy Dunlap
2008-02-01 4:38 ` Nicholas A. Bellinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1201802031.3131.29.camel@localhost.localdomain \
--to=james.bottomley@hansenpartnership.com \
--cc=Geert.Uytterhoeven@sonycom.com \
--cc=Masakazu_Mokuno@hq.scei.sony.co.jp \
--cc=aegislin@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cbe-oss-dev@ozlabs.org \
--cc=hch@lst.de \
--cc=jens.axboe@oracle.com \
--cc=linux-scsi@vger.kernel.org \
--cc=nab@linux-iscsi.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox