[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070611115926.GB18832@kernel.dk>
Date: Mon, 11 Jun 2007 13:59:26 +0200
From: Jens Axboe <jens.axboe@...cle.com>
To: netdev@...r.kernel.org
Cc: olaf.kirch@...cle.com, johnpol@....mipt.ru
Subject: [PATCH][RFC] network splice receive v2
Hi,
Here's an updated implementation of tcp network splice receive support.
It actually works for me now, no data corruption seen.
For the original announcement and how to test it, see:
http://marc.info/?l=linux-netdev&m=118103093400770&w=2
I hang on to the original skb by creating a clone of it and holding
references to that. I really don't need a clone, but tcp_read_sock() is
not being very helpful by calling sk_eat_skb() which blissfully ignores
any reference counts and uncondtionally frees the skb - why is that??
The clone works around that issue.
The current code also gets rid of the data_ready hack, and it should now
handle linear/fragments/fraglist in the skb just fine. Thanks to Olaf
for providing review of that stuff!
Patches are against the #splice branch of the block repo, "official" url
of that is:
git://git.kernel.dk/data/git/linux-2.6-block.git/
and it's based on Linus main tree. Let me know if I should supply netdev
branch patches instead, or even just provide a rolled up patch (or patch
series) for anyone curious to test or play with it.
--
Jens Axboe
View attachment "0001-splice-don-t-assume-regular-pages-in-splice_to_pipe.patch" of type "text/x-patch" (2138 bytes)
View attachment "0002-tcp_read_sock-alloc-recv_actor-return-return-nega.patch" of type "text/x-patch" (1105 bytes)
View attachment "0003-TCP-splice-receive-support.patch" of type "text/x-patch" (13050 bytes)
Powered by blists - more mailing lists