From: Boaz Harrosh <bharrosh@panasas.com>
To: Mike Christie <michaelc@cs.wisc.edu>, linux-scsi@vger.kernel.org
Cc: James Bottomley <James.Bottomley@SteelEye.com>,
Jens Axboe <jens.axboe@oracle.com>,
Benny Halevy <bhalevy@panasas.com>
Subject: Re: Possible bug in scsi_lib.c:scsi_req_map_sg()
Date: Tue, 28 Nov 2006 17:44:04 +0200 [thread overview]
Message-ID: <456C5944.9060509@panasas.com> (raw)
In-Reply-To: <456B38E9.6060209@cs.wisc.edu>
Mike Christie wrote:
> Boaz Harrosh wrote:
>> Playing with some tests which I admit are not 100% orthodox I have
>> stumbled upon a bug that raises a serious question:
>>
>> In the call to scsi_execute_async() in the use_sg case, must the
>> scatterlist* (pointed to by buffer) map a buffer that's contiguous in
>> virtual memory or is it allowed to map disjoint segments of memory?
>
> I thought they were continguous. I think James has said before that they
> can be disjoint. When we converted sg it did not look like sg or st
> supported disjoint. The main non dio path used a buffer from
> get_free_pages so I thought that would always be contiguous. The dio
> path then always set the first sg offset, but the rest it set to zero.
>
> How did you hit this problem? Is it with sg or st, or with some other
> code? Is it the mmap path maybe?
OK I admit, guilty as charged, I was using it from a kernel driver, OSD-Initiator from IBM. The code is unorthodox in mapping user space iovects into scatterlist*. I will have to work around it than. Such a petty because it saves me a copy of an high bandwidth channel. with iSCSI the fix works well but I guess if the working assumption was "contiguous", than allowing it here will expose problems in drivers that don't expect it.
In any way the bio.c patch should go in. 1. Zero vecs bio cannot be freed with current code 2. It lets kernel exit gracefully with an error instead of a crash.
should we at least do below patch so people know what happened postmortem:
diff -Npu /tmp/tmp.5864.0 /home/bharrosh/p4.local/local/scsi-misc-2.6-dev/linux/drivers/scsi/scsi_lib.c -L a/scsi_lib.c -L b/scsi_lib.c
--- a/scsi_lib.c
+++ b/scsi_lib.c
@@ -321,6 +321,9 @@ static int scsi_req_map_sg(struct reques
nr_vecs = min_t(int, BIO_MAX_PAGES, nr_pages);
nr_pages -= nr_vecs;
+ /* most probably not a contiguous memory mapping */
+ BUGON(!nr_vecs);
+
bio = bio_alloc(gfp, nr_vecs);
if (!bio) {
err = -ENOMEM;
next prev parent reply other threads:[~2006-11-28 15:45 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-27 17:44 Possible bug in scsi_lib.c:scsi_req_map_sg() Boaz Harrosh
2006-11-27 19:13 ` Mike Christie
2006-11-27 19:27 ` Mike Christie
2006-11-27 21:52 ` Kai Makisara
2006-11-28 18:57 ` Jens Axboe
2006-11-29 9:30 ` Benny Halevy
2007-03-02 16:45 ` Dachepalli, Sudhir
2007-03-02 21:19 ` Mike Christie
2007-03-02 21:59 ` Mike Christie
2007-03-02 23:45 ` Dachepalli, Sudhir
2007-03-04 0:04 ` Mike Christie
2007-03-04 7:36 ` Dachepalli, Sudhir
2007-03-04 14:31 ` James Bottomley
2007-03-04 15:43 ` Mike Christie
2007-03-04 15:57 ` James Bottomley
2007-03-04 16:21 ` Mike Christie
2007-03-04 16:51 ` James Bottomley
2007-03-04 17:04 ` Mike Christie
2007-03-04 17:07 ` Mike Christie
2007-03-04 18:00 ` Dachepalli, Sudhir
2007-03-04 18:14 ` James Bottomley
2007-03-04 19:06 ` Dachepalli, Sudhir
2007-03-05 13:00 ` Christoph Hellwig
2007-03-05 13:02 ` Christoph Hellwig
2006-11-27 23:33 ` James Bottomley
2006-11-28 15:44 ` Boaz Harrosh [this message]
2006-11-28 17:30 ` Mike Christie
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=456C5944.9060509@panasas.com \
--to=bharrosh@panasas.com \
--cc=James.Bottomley@SteelEye.com \
--cc=bhalevy@panasas.com \
--cc=jens.axboe@oracle.com \
--cc=linux-scsi@vger.kernel.org \
--cc=michaelc@cs.wisc.edu \
/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