Re: allowed pages in the block later, was Re: [Ext2-devel] [PATCH]ext3: avoid sending down non-refcounted pages

From: Andrew Morton
Date: Mon Dec 12 2005 - 15:12:56 EST


Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
>
> On Sat, Dec 10, 2005 at 04:47:36PM -0800, Andrew Morton wrote:
> > Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> > >
> > > The problem we're trying to solve here is how do implement network block
> > > devices (nbd, iscsi) efficiently. The zero copy codepath in the networking
> > > layer does need to grab additional references to pages. So to use sendpage
> > > we need a refcountable page. pages used by the slab allocator are not
> > > normally refcounted so try to do get_page/pub_page on them will break.
> >
> > I don't get it. Doing get_page/put_page on a slab-allocated page should do
> > the right thing?
>
> As Arjan mentioned, what would be the right thing? Delaying returning the
> page to the page pool and disallow reuse until page count reaches zero?

Yes, that's what'll happen. slab will put its final ref to the page, so
whoever did that intervening get_page() ends up owning the page.

> All this seems highly impractical.

Well, as Arjan points out, doing get_page() won't prevent slab from
"freeing" a part of the page and reusing it for another object of the same
type.

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