Message ID | 1318245101-16890-1-git-send-email-ian.campbell@citrix.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On Mon, Oct 10, 2011 at 12:11:33PM +0100, Ian Campbell wrote: > A few network drivers currently use skb_frag_struct for this purpose but I have > patches which add additional fields and semantics there which these other uses > do not want. > > A structure for reference sub-page regions seems like a generally useful thing > so do so instead of adding a network subsystem specific structure. Subpage seems like a fairly bad name. page_frag would fit into the scheme used in a few other places. The brings back the discussion of unifying the various incarnations we have of this (biovec, skb frag and there were a few more at times), but IIRC one of the sticking points back then was that one offset insistet in 32-bit offset/len and the other on 16-bit. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 2011-10-10 at 16:55 +0100, Christoph Hellwig wrote: > On Mon, Oct 10, 2011 at 12:11:33PM +0100, Ian Campbell wrote: > > A few network drivers currently use skb_frag_struct for this purpose but I have > > patches which add additional fields and semantics there which these other uses > > do not want. > > > > A structure for reference sub-page regions seems like a generally useful thing > > so do so instead of adding a network subsystem specific structure. > > Subpage seems like a fairly bad name. page_frag would fit into the > scheme used in a few other places. ok. > The brings back the discussion of unifying the various incarnations we > have of this (biovec, skb frag and there were a few more at times), > but IIRC one of the sticking points back then was that one offset > insistet in 32-bit offset/len and the other on 16-bit. This version sizes the fields according to page size, was there somewhere which wanted to use an offset > PAGE_SIZE (or size > PAGE_SIZE for that matter). That would be pretty odd and/or not really a candidate for using this datastructure? Ian. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Oct 10, 2011 at 05:10:59PM +0100, Ian Campbell wrote: > This version sizes the fields according to page size, was there > somewhere which wanted to use an offset > PAGE_SIZE (or size > PAGE_SIZE > for that matter). That would be pretty odd and/or not really a candidate > for using this datastructure? I wasn't ever part of the fight myself and only vaguely remember it. Try to get linux-kernel and Jens onto the Cc list to at least have the major stakeholders informed. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
(reposting including LKML to catch other potential users) Is this structure of any use to unify other instances of a similar tuple, e.g. biovec, pagefrag etc? Ian. On Mon, 2011-10-10 at 12:11 +0100, Ian Campbell wrote: > A few network drivers currently use skb_frag_struct for this purpose but I have > patches which add additional fields and semantics there which these other uses > do not want. > > A structure for reference sub-page regions seems like a generally useful thing > so do so instead of adding a network subsystem specific structure. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > Cc: linux-mm@kvack.org > --- > include/linux/mm_types.h | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 774b895..dc1d103 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -135,6 +135,17 @@ struct page { > #endif > ; > > +struct subpage { > + struct page *page; > +#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536) > + __u32 page_offset; > + __u32 size; > +#else > + __u16 page_offset; > + __u16 size; > +#endif > +}; > + > typedef unsigned long __nocast vm_flags_t; > > /* -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 774b895..dc1d103 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -135,6 +135,17 @@ struct page { #endif ; +struct subpage { + struct page *page; +#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536) + __u32 page_offset; + __u32 size; +#else + __u16 page_offset; + __u16 size; +#endif +}; + typedef unsigned long __nocast vm_flags_t; /*
A few network drivers currently use skb_frag_struct for this purpose but I have patches which add additional fields and semantics there which these other uses do not want. A structure for reference sub-page regions seems like a generally useful thing so do so instead of adding a network subsystem specific structure. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Cc: linux-mm@kvack.org --- include/linux/mm_types.h | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)