#ifndef _BUF_H
#define _BUF_H
#include <sys/dir.h>
typedef struct buf
{
union
{
char b__data[BLOCK_SIZE]; /* ordinary user data */
direct b__dir[NR_DIR_ENTRIES]; /* directory block */
zone1_t b__v1_ind[V1_INDIRECTS]; /* V1 indirect block */
zone_t b__v2_ind[V2_INDIRECTS]; /* V2 indirect block */
d1_inode b__v1_ino[V1_INODES_PER_BLOCK]; /* V1 inode block */
d2_inode b__v2_ino[V2_INODES_PER_BLOCK]; /* V2 inode block */
bitchunk_t b__bitmap[BITMAP_CHUNKS]; /* bit map block */
} b;
/**
* Header portion of the buffer
*/
struct buf *b_next; /* used to link all free bufs in a chain */
struct buf *b_prev; /* used to link all free bufs the other way */
struct buf *b_hash; /* used to link all bufs on hash chains */
block_t b_blocknr; /* block number of its (minor) device */
dev_t b_dev; /* major | minor device where block resides */
char b_dirt; /* CLEAN or DIRTY */
char b_count; /* number of users of this buffer */
} buf[NR_BUFFS];
#endif /* _BUF_H */