On (22/09/09 17:30), Sergey Senozhatsky wrote: > > +++ b/drivers/block/zram/zram_drv.h > > @@ -50,6 +50,7 @@ enum zram_pageflags { > > ZRAM_UNDER_WB, /* page is under writeback */ > > ZRAM_HUGE, /* Incompressible page */ > > ZRAM_IDLE, /* not accessed page since last idle marking */ > > + ZRAM_NO_WB, /* Do not allow page to be written back */ > > > > __NR_ZRAM_PAGEFLAGS, > > }; > > Unrelated but somehow related. > > I wonder if it's time for us to introduce a dedicated, say u16, > flags member to struct zram_table_entry. Unless my calculations > are extremely wrong, we are about to run out of spare bits in > zram_table_entry::flags on 32-bit systems. Looking at it more - I wonder why do we define ZRAM_FLAG_SHIFT as 24? This is far more than maximum zram object size. Our max size needs PAGE_SHIFT bits (which is normally 12 bits, can be up to 16 (for 64k arm64 pages)). So we probably can start defining ZRAM_FLAG_SHIFT as (PAGE_SHIFT + 1). Or am I missing something? --- diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h index b4eecef2a11f..cb8f1f644baf 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h @@ -39,7 +39,7 @@ * The lower ZRAM_FLAG_SHIFT bits is for object size (excluding header), * the higher bits is for zram_pageflags. */ -#define ZRAM_FLAG_SHIFT 24 +#define ZRAM_FLAG_SHIFT (PAGE_SHIFT + 1) /* Flags for zram pages (table[page_no].flags) */ enum zram_pageflags {