Re: [PATCH 2/3] block: unexport blk_rq_append_bio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2009-02-12 at 01:04 +0900, FUJITA Tomonori wrote:
> On Wed, 11 Feb 2009 17:41:35 +0200
> Boaz Harrosh <bharrosh@xxxxxxxxxxx> wrote:
> 
> > FUJITA Tomonori wrote:
> > > On Wed, 11 Feb 2009 17:07:16 +0200
> > > Boaz Harrosh <bharrosh@xxxxxxxxxxx> wrote:
> > > 
> > >>>
> > >>>
> > >> Sure it can pass pages to ULD but then how ULD maks a request out of
> > >> pages?
> > > 
> > > If you extend blk_rq_map_kern as James did, your ULD make a request
> > > out of passed pages, that is, the block layer properly builds a
> > > request with bio(s).
> > 
> > What? I don't understand?
> > blk_rq_map_kern takes a kernel-pointer and length, how to pass array
> > of page* ?
> 
> You can call it multiple times. But I guess that you need something
> new since you need to handle user pages.
> 
> 
> > > I think that another possible option is adding a new mapping function
> > > that can handle multiple bios for kernel buffers (as Mike extended
> > > blk_rq_map_user).
> > > 
> > 
> > Yes adding a new mapping function can help. Please note I need to
> > add (append) pages same as bio_add_pc_page() but on request level.
> 
> I think that what you need already exists.
> 
> See how st uses blk_rq_map_user() in scsi-misc (keywords: rq_map_data
> and null_mapped). Please read it before saying something like 'we need
> to handle kernel buffer'.
> 
> 
> > And yet we had an entry that did exactly that, blk_rq_append_bio(), no?
> 
> Using blk_rq_append_bio in SCSI is unacceptable.
> 
> 
> > >> And it gets more complicated then that (above multiple times)
> > > 
> > > I don't think so. If you don't have time to work on it, please let me
> > > know. I'll fix OSD ULD.
> > 
> > I have all the time in the world, And yes what James did with blk_rq_map_kern
> > will help with appending other osd segments on top of data.
> > 
> > If you propose the appropriate new API for block request level I can implement
> > that in block, and also in OSD. What other entry you want to add/change that solve
> > my need?
> 
> If you have time, how about making a proposal. ;)
> 
> But as I wrote above, I think that blk_rq_map_user() works for you.

Part of the problem, I think, is that a typical filesystem either works
with pages (ext3) or bios (btrfs) and puts them in block at the top.
Block then accumulates the pages to bios, elevates the bios into
requests and spits those out to SCSI ... this is why we want to
eliminate bio handlers from SCSI.

Your problem is that you phrase your osd fs/pnfs in terms of bios, so
then you need to emulate the block bio handlers internally (because
you're bypassing block) in your ULD.  However, what we're saying is if
you speak pages instead, you can utilise the standard block pc handlers,
which are designed to speak pages, without reinventing the bio handling
infrastructure.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux