structbuf{intflags;uintdev;uintblockno;structsleeplocklock;uintrefcnt;structbuf*prev;// LRU cache liststructbuf*next;structbuf*qnext;// disk queueuchardata[BSIZE];};#define B_VALID 0x2 // buffer has been read from disk#define B_DIRTY 0x4 // buffer needs to be written to disk