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