lkml.org 
[lkml]   [2007]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 09/10] Change table chaining layout
    On Tue, Oct 23 2007, Boaz Harrosh wrote:
    > On Mon, Oct 22 2007 at 20:11 +0200, Jens Axboe <jens.axboe@oracle.com> wrote:
    > > Change the page member of the scatterlist structure to be an unsigned
    > > long, and encode more stuff in the lower bits:
    > >
    > > - Bits 0 and 1 zero: this is a normal sg entry. Next sg entry is located
    > > at sg + 1.
    > > - Bit 0 set: this is a chain entry, the next real entry is at ->page_link
    > > with the two low bits masked off.
    > > - Bit 1 set: this is the final entry in the sg entry. sg_next() will return
    > > NULL when passed such an entry.
    > >
    > > It's thus important that sg table users use the proper accessors to get
    > > and set the page member.
    > >
    > > Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
    > > ---
    > <snip>
    > >
    > > /**
    > > * sg_set_page - Set sg entry to point at given page
    > > @@ -20,11 +37,20 @@
    > > **/
    > > static inline void sg_set_page(struct scatterlist *sg, struct page *page)
    > > {
    > > - sg->page = page;
    > > + unsigned long page_link = sg->page_link & 0x3;
    > > +
    > You might want to put a BUG_ON(page & 0x3); Make sure
    > you're not loosing information. (The m68k problem)

    That's a really good idea, thanks Boaz! I'll add that.

    --
    Jens Axboe

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-23 20:35    [W:3.977 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site