All of lore.kernel.org
 help / color / mirror / Atom feed
From: FUJITA Tomonori <tomof@acm.org>
To: James.Bottomley@HansenPartnership.com
Cc: tomof@acm.org, matthew@wil.cx, dougg@torque.net,
	linux-scsi@vger.kernel.org, fujita.tomonori@lab.ntt.co.jp,
	linux-ide@vger.kernel.org
Subject: Re: [PATCH] scsi_debug: disable clustering
Date: Mon, 18 Feb 2008 00:11:45 +0900	[thread overview]
Message-ID: <20080218001211R.tomof@acm.org> (raw)
In-Reply-To: <1203260534.3082.15.camel@localhost.localdomain>

On Sun, 17 Feb 2008 09:02:14 -0600
James Bottomley <James.Bottomley@HansenPartnership.com> wrote:

> 
> On Sun, 2008-02-17 at 23:52 +0900, FUJITA Tomonori wrote:
> > On Sun, 17 Feb 2008 07:28:48 -0700
> > Matthew Wilcox <matthew@wil.cx> wrote:
> > 
> > > On Sun, Feb 17, 2008 at 08:18:11AM -0600, James Bottomley wrote:
> > > > No, he means that kmap_atomic can only map a page of data.  This makes
> > > > single page only sg list entries and input assumption into this loop.
> > > > with ENABLE_CLUSTERING, that's potentially not true.   Of course, this
> > > > accidentally works most of the time because of the way kmap functions.
> > > 
> > > Ah, right.  I'm on the verge of releasing a ram-based scsi driver I've
> > > been working on ... this loop should work fine with clustering as it
> > > takes account of the sg potentially having multiple pages:
> > > 
> > >         scsi_for_each_sg(cmnd, sg, scsi_sg_count(cmnd), i) {
> > >                 struct page *sgpage = sg_page(sg);
> > >                 unsigned int to_off = sg->offset;
> > >                 unsigned int sg_copy = sg->length;
> > >                 if (sg_copy > len)
> > >                         sg_copy = len;
> > >                 len -= sg_copy;
> > 
> > stex driver has a similar function to copies data between a buffer and
> > a scatter list. I think that scsi_kmap_atomic_sg is a bit primitive
> > (and not very popular).  I'll send a patch to add a helper function to
> > scsi_lib.c that copies data between a buffer and a scatter list. It
> > would be useful for several drivers.
> 
> Actually, if you're going to sweep up them all, libata also does this.

Thanks, I'll look at it.


> However, mapping and copying data isn't a SCSI specific function, it's
> one any virtual block driver should do, so I think block might be the
> correct location for such a function.

I see. It could go to lib/scatterlist.c or block/ I guess.

  reply	other threads:[~2008-02-17 15:11 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-16 14:57 [PATCH] scsi_debug: disable clustering FUJITA Tomonori
2008-02-17  5:53 ` Douglas Gilbert
2008-02-17 14:10 ` Matthew Wilcox
2008-02-17 14:18   ` James Bottomley
2008-02-17 14:28     ` Matthew Wilcox
2008-02-17 14:52       ` FUJITA Tomonori
2008-02-17 15:02         ` James Bottomley
2008-02-17 15:11           ` FUJITA Tomonori [this message]
2008-02-17 15:22             ` James Bottomley

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=20080218001211R.tomof@acm.org \
    --to=tomof@acm.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=dougg@torque.net \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=matthew@wil.cx \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.