From: Jens Axboe <jens.axboe@oracle.com>
To: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH][RFC] network splice receive
Date: Fri, 8 Jun 2007 09:48:24 +0200 [thread overview]
Message-ID: <20070608074823.GG7341@kernel.dk> (raw)
In-Reply-To: <20070607145818.GA26491@2ka.mipt.ru>
On Thu, Jun 07 2007, Evgeniy Polyakov wrote:
> On Thu, Jun 07, 2007 at 12:51:59PM +0200, Jens Axboe (jens.axboe@oracle.com) wrote:
> > > What bout checking if page belongs to kmalloc cache (or any other cache
> > > via priviate pointers) and do not perform any kind of reference counting
> > > on them? I will play with this a bit later today.
> >
> > That might work, but sounds a little dirty... But there's probably no
> > way around. Be sure to look at the #splice-net branch if you are playing
> > with this, I've updated it a number of times and fixed some bugs in
> > there. Notably it now gets the offset right, and handles fragments and
> > fraglist as well.
>
> I've pulled splice-net, which indeed fixed some issues, but referencing
> slab pages is still is not allowed. There are at least two problems
> (although they are related):
> 1. if we do not increment reference counter for slab pages, they
> eventually get refilled and slab exploses after it understood that its
> pages are in use (or user dies when page is moved out of his control in
> slab).
> 2. get/put page does not work with slab pages, and simple
> increment/decrement of the reference counters is not allowed too.
>
> Both problems have the same root - slab does not allow anyone to
> manipulate page's members. That should be broken/changed to allow splice
> to put its hands into network using the fastest way.
> I will think about it.
Perhaps it's possible to solve this at a different level - can we hang
on to the skb until the pipe buffer has been consumed, and prevent reuse
that way? Then we don't have to care what backing the skb has, as long
as it (and its data) isn't being reused until we drop the reference to
it in sock_pipe_buf_release().
--
Jens Axboe
next prev parent reply other threads:[~2007-06-08 7:49 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-05 8:05 [PATCH][RFC] network splice receive Jens Axboe
2007-06-05 11:45 ` Jens Axboe
2007-06-05 12:20 ` Jens Axboe
2007-06-05 12:34 ` jamal
2007-06-06 7:14 ` Jens Axboe
2007-06-05 13:34 ` Evgeniy Polyakov
2007-06-05 14:31 ` Evgeniy Polyakov
2007-06-05 14:49 ` Evgeniy Polyakov
2007-06-06 7:17 ` Jens Axboe
2007-06-07 8:09 ` Evgeniy Polyakov
2007-06-07 10:51 ` Jens Axboe
2007-06-07 14:58 ` Evgeniy Polyakov
2007-06-08 7:48 ` Jens Axboe [this message]
2007-06-08 8:06 ` David Miller
2007-06-08 8:38 ` Jens Axboe
2007-06-08 8:56 ` Evgeniy Polyakov
2007-06-08 9:04 ` Jens Axboe
2007-06-08 13:58 ` Evgeniy Polyakov
2007-06-08 14:14 ` Jens Axboe
2007-06-08 14:57 ` Evgeniy Polyakov
2007-06-08 15:19 ` Jens Axboe
2007-06-08 15:30 ` Evgeniy Polyakov
2007-06-09 6:36 ` Jens Axboe
2007-06-12 11:29 ` Evgeniy Polyakov
2007-06-12 11:33 ` Jens Axboe
2007-06-12 12:35 ` Evgeniy Polyakov
2007-06-12 12:40 ` Jens Axboe
2007-06-12 13:11 ` Evgeniy Polyakov
2007-06-12 13:11 ` Jens Axboe
2007-06-11 8:00 ` Jens Axboe
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=20070608074823.GG7341@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=johnpol@2ka.mipt.ru \
--cc=netdev@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).