1 struct buf { 2 int valid; // has data been read from disk? 3 int disk; // does disk "own" buf? 4 uint dev; 5 uint blockno; 6 struct sleeplock lock; 7 uint refcnt; 8 struct buf *prev; // LRU cache list 9 struct buf *next; 10 uchar data[BSIZE]; 11 }; 12