lkml.org 
[lkml]   [2008]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH][RFC 23/23]: Support for zero-copy TCP transmit of user space data
    On Sat, Dec 20, 2008 at 07:10:45PM +1100, Herbert Xu (herbert@gondor.apana.org.au) wrote:
    > > Hm. So if I get a destructor call from the shared_info, can I go an
    > > inspect the page refcounts to see if its really the last use?
    >
    > The pages that were originally in the shared_info at creation
    > time may no longer be there by the time it's freed because of
    > pskb_pull_tail.

    Things should work fine, since pskb_expand_head() copies whole shared
    info structure (and thus will copy destructor), get all pages and then
    copy all pointers into the new skb, and then release old skb's data.

    So destructor for the pages should not rely on which skb it is called on
    and check if pages are about to be really freed (i.e. check theirs
    reference counter).

    __pskb_pull_tail() is tricky, it just puts some pages it does not want
    to be present in the skb, but it could be possible to add there
    destructor callback from the original skb with partial flag (or just
    having destructor with two parameters: skb and page, and if page is not
    NULL, then actually only given page is freed, otherwise the whole skb).

    --
    Evgeniy Polyakov


    \
     
     \ /
      Last update: 2008-12-20 11:35    [W:0.020 / U:31.748 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site