Re: [PATCH 14/33] readahead: state based method - data structure

From: Wu Fengguang
Date: Sat May 27 2006 - 03:01:50 EST


On Fri, May 26, 2006 at 10:05:52AM -0700, Andrew Morton wrote:
> Wu Fengguang <wfg@xxxxxxxxxxxxxxxx> wrote:
> >
> > #define RA_FLAG_MISS 0x01 /* a cache miss occured against this file */
> > #define RA_FLAG_INCACHE 0x02 /* file is already in cache */
> > +#define RA_FLAG_MMAP (1UL<<31) /* mmaped page access */
> > +#define RA_FLAG_NO_LOOKAHEAD (1UL<<30) /* disable look-ahead */
> > +#define RA_FLAG_EOF (1UL<<29) /* readahead hits EOF */
>
> Odd. Why not use 4, 8, 16?

Sorry, the lower 8 bits are for ra_class values in the new code. It can
cause data corruption when dynamic switching between the two logics :(

I'd like to change the flags member to explicit ones like

struct {
unsigned miss :1;
unsigned incache :1;
unsigned mmap :1;
unsigned no_lookahead :1;
unsigned eof :1;
} flags;

unsigned class_new :4;
unsigned class_old :4;

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