Re: [PATCH V5 2/6 net-next] netdevice.h: Add zero-copy flag in netdevice
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2011-05-19 23:42:05
Also in:
kvm, lkml
On Thu, May 19, 2011 at 12:42:49PM -0700, Shirley Ma wrote:
On Wed, 2011-05-18 at 10:00 -0700, Shirley Ma wrote:quoted
On Wed, 2011-05-18 at 19:51 +0300, Michael S. Tsirkin wrote:quoted
quoted
quoted
Yes, I agree. I think for tcpdump, we really need to copy thedataquoted
quoted
anyway, to avoid guest changing it in between. So we do thatandquoted
thenquoted
quoted
use the copy everywhere, release the old one. Hmm?Yes. Old one use zerocopy, new one use copy data. Thanks ShirleyNo, that's wrong, as they might become different with a malicious guest. As long as we copied already, lets realease the data and have everyone use the copy.Ok, I will patch pskb_expand_head to test it out.I am patching skb_copy, skb_clone, pskb_copy, pskb_expand_head to convert a zero-copy skb to a copy skb to avoid this kind of issue. This overhead won't impact macvtap/vhost TX zero-copy normally. Shirley
OK, that will handle packet socket at least in that it won't crash :) So the requirements are - data must be released in a timely fashion (e.g. unlike virtio-net tun or bridge) - no filtering based on data (data is mapped in guest) - SG support - HIGHDMA support (on arches where this makes sense) - on fast path no calls to skb_copy, skb_clone, pskb_copy, pskb_expand_head as these are slow First 2 requirements are a must, all other requirements are just dependencies to make sure zero copy will be faster than non zero copy. Using a new feature bit is probably the simplest approach to this. macvtap on top of most physical NICs most likely works correctly so it seems a bit more work than it needs to be, but it's also the safest one I think ... -- MST