On Mon, May 27, 2024 at 11:43:43PM +0100, Matthew Wilcox wrote: > On Mon, May 27, 2024 at 11:39:47PM +0100, Matthew Wilcox wrote: > > > > + AS_FOLIO_ORDER_MIN = 16, > > > > + AS_FOLIO_ORDER_MAX = 21, /* Bits 16-25 are used for FOLIO_ORDER */ > > > > }; > > > > > > > > +#define AS_FOLIO_ORDER_MIN_MASK 0x001f0000 > > > > +#define AS_FOLIO_ORDER_MAX_MASK 0x03e00000 > > > > > > As you changed the mapping flag offset, these masks also needs to be > > > changed accordingly. > > > > That's why I did change them? > > How about: > > -#define AS_FOLIO_ORDER_MIN_MASK 0x001f0000 > -#define AS_FOLIO_ORDER_MAX_MASK 0x03e00000 > +#define AS_FOLIO_ORDER_MIN_MASK (31 << AS_FOLIO_ORDER_MIN) > +#define AS_FOLIO_ORDER_MAX_MASK (31 << AS_FOLIO_ORDER_MAX) Lots of magic numbers based on the order having only having 5 bits of resolution. Removing that magic looks like this: AS_FOLIO_ORDER_BITS = 5, AS_FOLIO_ORDER_MIN = 16, AS_FOLIO_ORDER_MAX = AS_FOLIO_ORDER_MIN + AS_FOLIO_ORDER_BITS, }; #define AS_FOLIO_ORDER_MASK ((1u << AS_FOLIO_ORDER_BITS) - 1) #define AS_FOLIO_ORDER_MIN_MASK (AS_FOLIO_ORDER_MASK << AS_FOLIO_ORDER_MIN) #define AS_FOLIO_ORDER_MAX_MASK (AS_FOLIO_ORDER_MASK << AS_FOLIO_ORDER_MAX) This way if we want to increase the order mask, we only need to change AS_FOLIO_ORDER_BITS and everything else automatically recalculates. Doing this means We could also easily use the high bits of the flag word for the folio orders, rather than putting them in the middle of the flag space... -Dave. -- Dave Chinner david@xxxxxxxxxxxxx