1struct buf {
2 int flags;
3 uint dev;
4 uint blockno;
5 struct sleeplock lock;
6 uint refcnt;
7 struct buf *prev; // LRU cache list
8 struct buf *next;
9 struct buf *qnext; // disk queue
10 uchar data[BSIZE];
11};
12#define B_VALID 0x2 // buffer has been read from disk
13#define B_DIRTY 0x4 // buffer needs to be written to disk
14
15