缓冲区首部结构
struct buffer_head
{
struct buffer_head *b_next; //用于缓冲块索引的散列链
unsigned long b_blocknr; //该缓冲区在块设备上的块号
unsigned short b_size; //该缓冲区数据块尺寸
unsigned short b_list; //在lru_list[]中的序号,表示该缓冲区的使用状态.
kdev_t b_dev; //缓冲区所属的逻辑块设备
atomic_t b_count; //引用计数
kdev_t b_rdev; //所属的物理块设备
unsigned long b_state;
unsigned long b_flushtime;
struct buffer_head *b_next_free; // 指向下一备用缓冲块
struct buffer_head *b_prev_free; //指向前一备用缓冲块
struct buffer_head *b_this_page; // 指向同一页面的缓冲块,形成环形链表
struct buffer_head *b_reqnext; //用于块设备驱动程序
struct buffer_head **b_pprev; //用于缓冲块散列链
char * b_data; //指向缓冲块的数据区
struct page *b_page; // 缓冲块的数据区所在的页面
};