Messages in this thread | | | Date | Mon, 12 Jan 2009 23:56:07 +1100 | From | Herbert Xu <> | Subject | Re: Data corruption issue with splice() on 2.6.27.10 |
| |
On Mon, Jan 12, 2009 at 03:45:46PM +0300, Evgeniy Polyakov wrote: > > As a long-term solution this sounds as the best case, but introduces > quite heavy overhead for the allocators. Right now we allocate > 1500+shared_info rounded up to the nearest power of the two (2k), but > then we will either need to have own network allocator (I have one :) or > allocate PAGE_SIZE+shared_info rounded up to the pwoer of the two (i.e. > 8k), which is unfeasible.
No that's not what I was suggesting. The page split model allocates an skb with a very small head that accomodates only the headers. All payload is stored in the frags structure.
For 1500-byte packets, we can manage the payload area efficiently by dividing each allocated page into 2K chunks. The page will then be automatically freed once all the 2K chunks on it have been freed through the page ref count mechanism.
Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
| |