All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <jens.axboe@oracle.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>,
	linux-scsi@vger.kernel.org
Subject: Re: [PATCH] [9/20] Add blk_kmalloc/blk_alloc_pages
Date: Mon, 17 Mar 2008 21:29:31 +0100	[thread overview]
Message-ID: <20080317202931.GO17940@kernel.dk> (raw)
In-Reply-To: <20080317085341.GK27015@one.firstfloor.org>

On Mon, Mar 17 2008, Andi Kleen wrote:
> On Mon, Mar 17, 2008 at 09:38:32AM +0100, Jens Axboe wrote:
> > On Mon, Mar 17 2008, Andi Kleen wrote:
> > > On Mon, Mar 17, 2008 at 09:27:11AM +0100, Jens Axboe wrote:
> > > > On Fri, Mar 14 2008, Andi Kleen wrote:
> > > > > On Fri, Mar 14, 2008 at 02:48:14PM +0100, Jens Axboe wrote:
> > > > > > On Thu, Mar 13 2008, James Bottomley wrote:
> > > > > > > \On Fri, 2008-03-07 at 18:54 +0100, Andi Kleen wrote:
> > > > > > > > When a user is doing IO in the kernel and wants to avoid bouncing
> > > > > > > > it is best to just ask the block layer to allocate the memory for it.
> > > > > > > > This patch adds two simple wrappers: blk_kmalloc and blk_alloc_pages
> > > > > > > > and respective free functions to do this.
> > > > > > > > 
> > > > > > > > blk_alloc_pages is a little unusual in that it takes size
> > > > > > > > instead of order arguments -- i did this because I have later
> > > > > > > > patches to convert it over to a new allocator which does not 
> > > > > > > > require power of two for pages.
> > > > > > > 
> > > > > > > I really don't like this ... it's wedging something in the block layer
> > > > > > > that shouldn't be there just to avoid doing it properly in terms of
> > > > > > > allocations on the device dma_mask.
> > > > > > > 
> > > > > > > I also think the kfree takes a length part is asking for trouble because
> > > > > > > it's pretty fragile.
> > > > > > > 
> > > > > > > However, if Jens will ack it, I'll (reluctantly) add it.
> > > > > > 
> > > > > > I agree with you, I don't like it at all (for a variety of reasons).
> > > > > 
> > > > > For what reasons exactly? 
> > > > 
> > > > Mainly the one I list below. Using the interface for allocation is
> > > > actually more involved that just doing it yourself, which is not a sign
> > > > of a good abstraction.
> > > 
> > > hmm, missed the point sorry. How is using the interface more
> > > involved? It has to get a mask or a pfn from somewhere and 
> > > without the interface that's actually more code to write out.
> > 
> > Because it requires tracking length, for instance. Your interface just
> 
> While the implementation in the first patch does not require tracking
> length, the mask allocator version that is only introduced about 15 
> patches later or so does. That is why i added the length parameter
> in the first patch already, although it is not used yet.
> 
> Sorry for not making that more clear in the changelog
> 
> I actually considered tracking length in the struct page in the
> mask allocator for this, but when I looked at the callers I noticed 90+% 
> of them only used a constant length which does not really
> need to get tracked. It is always the same. Then there are two
> or so with a variable length, but it is all local to a single
> function so it's also not particularly burdensome to track either.
> Please take a look at the callers and you'll see the same.
> 
> > doesn't add anything useful, 
> 
> Well for once it allows easy conversion to the mask alloactor linux
> world.  That is the reason'd'etre of the whole patchkit as far as I'm
> concerned anyways.

The queue_to_gfp_mask() would make that conversion equally simple.

> > it's not a good abstraction/api imho.
> 
> I'm still trying to figure out what exactly you object to. 
> 
> Is the only problem the length? Would blk_kmalloc/kfree() be ok 
> for you if kfree didn't require a length parameter? It would
> not be that hard to add one, although frankly I personally
> don't see the need.

Well both - as mentioned, the queue_to_gfp_mask() is cleaner I think.
And I just don't think it's a good API to begin with, to me it's
inventing something that doesn't really buy you anything. With an
exported mask function, you can pass that to any allocator.

> Or alternatively I will just remove it if James can get convinced
> to back down on his earlier requirement for bounce less scanning.

Personally, for scanning I could not care less. It may actually be a
good idea, as bouncing would get tested more so we're sure it doesn't
get broken ;-)

> > Put it in block/ or blkdev.h and call it queue_mask_to_gfp() or
> > something, that would be fine.
> 
> There is no gfp anymore for this in the mask allocator world!!!! Only
> masks and a slight abstraction for some cases request queues with 
> bounce pfns.

Then name it queue_bounce_mask() or something, principle is the same
(export mask vs export silly api for allocation/free).

-- 
Jens Axboe


  parent reply	other threads:[~2008-03-17 20:29 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-07 17:53 [PATCH] [0/20] Remove isa_unchecked_dma and some more GFP_DMAs in the mid layer v3 Andi Kleen
2008-03-07 17:54 ` [PATCH] [1/20] Add sense_buffer_isa to host template Andi Kleen
2008-03-07 17:54 ` [PATCH] [2/20] Remove unchecked_isa in BusLogic Andi Kleen
2008-03-07 17:54 ` [PATCH] [3/20] Remove unchecked_isa_dma in advansys.c Andi Kleen
2008-03-07 17:54 ` [PATCH] [4/20] Remove unchecked_isa_dma in gdth Andi Kleen
2008-03-07 17:54 ` [PATCH] [5/20] Remove unchecked_isa_dma in eata.c Andi Kleen
2008-03-07 17:54 ` [PATCH] [6/20] Remove unchecked_isa_dma in aha1542 Andi Kleen
2008-03-07 17:54 ` [PATCH] [7/20] Remove unchecked_isa_dma in aha152x/wd7000/sym53c416/u14-34f/NCR53c406a Andi Kleen
2008-03-07 17:54 ` [PATCH] [8/20] Remove random noop unchecked_isa_dma users Andi Kleen
2008-03-07 17:54 ` [PATCH] [9/20] Add blk_kmalloc/blk_alloc_pages Andi Kleen
2008-03-13 22:06   ` James Bottomley
2008-03-14 13:48     ` Jens Axboe
2008-03-14 13:59       ` Andi Kleen
2008-03-17  8:27         ` Jens Axboe
2008-03-17  8:36           ` Andi Kleen
2008-03-17  8:38             ` Jens Axboe
2008-03-17  8:53               ` Andi Kleen
2008-03-17  9:18                 ` Boaz Harrosh
2008-03-17 10:03                   ` Andi Kleen
2008-03-17 20:29                 ` Jens Axboe [this message]
2008-03-17 20:45                   ` Andi Kleen
2008-03-17 20:46                     ` Jens Axboe
2008-03-17 21:34                       ` Andi Kleen
2008-03-18  7:26                         ` Jens Axboe
2008-04-02  3:37                         ` FUJITA Tomonori
2008-04-02  8:43                           ` Boaz Harrosh
2008-04-02 11:08                             ` FUJITA Tomonori
2008-04-02 11:32                               ` Boaz Harrosh
2008-03-17 13:59           ` James Bottomley
2008-03-07 17:54 ` [PATCH] [11/20] Remove unchecked_isa_dma support for hostdata Andi Kleen
2008-03-07 17:54 ` [PATCH] [12/20] Remove unchecked_isa_dma checks in sg.c Andi Kleen
2008-03-07 17:54 ` [PATCH] [13/20] Use blk_kmalloc in scsi_scan Andi Kleen
2008-03-07 17:54 ` [PATCH] [14/20] Don't disable direct_io for unchecked_isa_dma in st.c Andi Kleen
2008-03-14 13:51   ` Jens Axboe
2008-03-14 14:24     ` Christoph Hellwig
2008-03-16 12:39       ` Boaz Harrosh
2008-03-16 12:44         ` Andi Kleen
2008-03-17  8:28           ` Jens Axboe
2008-03-27 17:26         ` Mike Christie
2008-03-17  8:27       ` Jens Axboe
2008-03-17 10:55       ` FUJITA Tomonori
2008-03-17 12:21         ` Boaz Harrosh
2008-03-07 17:54 ` [PATCH] [15/20] Remove automatic block layer bouncing for unchecked_isa_dma Andi Kleen
2008-03-07 17:54 ` [PATCH] [16/20] Convert sr driver over the blk_kmalloc Andi Kleen
2008-03-07 17:54 ` [PATCH] [17/20] Remove unchecked_isa_dma from sysfs Andi Kleen
2008-03-07 17:54 ` [PATCH] [18/20] Switch to a single SCSI command pool Andi Kleen
2008-03-07 17:54 ` [PATCH] [19/20] Finally kill unchecked_isa_dma Andi Kleen
2008-03-07 17:54 ` [PATCH] [20/20] Convert DMA buffers in ch.c to allocate via the block layer Andi Kleen
2008-03-11 17:55 ` [PATCH] [0/20] Remove isa_unchecked_dma and some more GFP_DMAs in the mid layer v3 Boaz Harrosh
2008-03-12  0:56   ` Andi Kleen

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=20080317202931.GO17940@kernel.dk \
    --to=jens.axboe@oracle.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=andi@firstfloor.org \
    --cc=linux-scsi@vger.kernel.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 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.