fs/jfs/jfs_dmap.h

Source file repositories/reference/linux-study-clean/fs/jfs/jfs_dmap.h

File Facts

System
Linux kernel
Corpus path
fs/jfs/jfs_dmap.h
Extension
.h
Size
10792 bytes
Lines
304
Domain
Core OS
Bucket
VFS And Filesystem Core
Inferred role
Core OS: implementation source
Status
source implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

struct dmaptree {
	__le32 nleafs;		/* 4: number of tree leafs	*/
	__le32 l2nleafs;	/* 4: l2 number of tree leafs	*/
	__le32 leafidx;		/* 4: index of first tree leaf	*/
	__le32 height;		/* 4: height of the tree	*/
	s8 budmin;		/* 1: min l2 tree leaf value to combine */
	s8 stree[TREESIZE];	/* TREESIZE: tree		*/
	u8 pad[2];		/* 2: pad to word boundary	*/
};				/* - 360 -			*/

/*
 *	dmap page per 8K blocks bitmap
 */
struct dmap {
	__le32 nblocks;		/* 4: num blks covered by this dmap	*/
	__le32 nfree;		/* 4: num of free blks in this dmap	*/
	__le64 start;		/* 8: starting blkno for this dmap	*/
	struct dmaptree tree;	/* 360: dmap tree			*/
	u8 pad[1672];		/* 1672: pad to 2048 bytes		*/
	__le32 wmap[LPERDMAP];	/* 1024: bits of the working map	*/
	__le32 pmap[LPERDMAP];	/* 1024: bits of the persistent map	*/
};				/* - 4096 -				*/

/*
 *	disk map control page per level.
 *
 * dmapctl must be consistent with dmaptree.
 */
struct dmapctl {
	__le32 nleafs;		/* 4: number of tree leafs	*/
	__le32 l2nleafs;	/* 4: l2 number of tree leafs	*/
	__le32 leafidx;		/* 4: index of the first tree leaf	*/
	__le32 height;		/* 4: height of tree		*/
	s8 budmin;		/* 1: minimum l2 tree leaf value	*/
	s8 stree[CTLTREESIZE];	/* CTLTREESIZE: dmapctl tree	*/
	u8 pad[2714];		/* 2714: pad to 4096		*/
};				/* - 4096 -			*/

/*
 *	common definition for dmaptree within dmap and dmapctl
 */
typedef union dmtree {
	struct dmaptree t1;
	struct dmapctl t2;
} dmtree_t;

/* macros for accessing fields within dmtree */
#define	dmt_nleafs	t1.nleafs
#define	dmt_l2nleafs	t1.l2nleafs
#define	dmt_leafidx	t1.leafidx
#define	dmt_height	t1.height
#define	dmt_budmin	t1.budmin
#define	dmt_stree	t2.stree

/*
 *	on-disk aggregate disk allocation map descriptor.
 */
struct dbmap_disk {
	__le64 dn_mapsize;	/* 8: number of blocks in aggregate	*/
	__le64 dn_nfree;	/* 8: num free blks in aggregate map	*/
	__le32 dn_l2nbperpage;	/* 4: number of blks per page		*/
	__le32 dn_numag;	/* 4: total number of ags		*/
	__le32 dn_maxlevel;	/* 4: number of active ags		*/
	__le32 dn_maxag;	/* 4: max active alloc group number	*/
	__le32 dn_agpref;	/* 4: preferred alloc group (hint)	*/
	__le32 dn_aglevel;	/* 4: dmapctl level holding the AG	*/
	__le32 dn_agheight;	/* 4: height in dmapctl of the AG	*/
	__le32 dn_agwidth;	/* 4: width in dmapctl of the AG	*/
	__le32 dn_agstart;	/* 4: start tree index at AG height	*/
	__le32 dn_agl2size;	/* 4: l2 num of blks per alloc group	*/
	__le64 dn_agfree[MAXAG];/* 8*MAXAG: per AG free count		*/
	__le64 dn_agsize;	/* 8: num of blks per alloc group	*/
	s8 dn_maxfreebud;	/* 1: max free buddy system		*/
	u8 pad[3007];		/* 3007: pad to 4096			*/
};				/* - 4096 -				*/

struct dbmap {
	s64 dn_mapsize;		/* number of blocks in aggregate	*/
	s64 dn_nfree;		/* num free blks in aggregate map	*/
	int dn_l2nbperpage;	/* number of blks per page		*/
	int dn_numag;		/* total number of ags			*/
	int dn_maxlevel;	/* number of active ags			*/
	int dn_maxag;		/* max active alloc group number	*/
	int dn_agpref;		/* preferred alloc group (hint)		*/
	int dn_aglevel;		/* dmapctl level holding the AG		*/
	int dn_agheight;	/* height in dmapctl of the AG		*/
	int dn_agwidth;		/* width in dmapctl of the AG		*/
	int dn_agstart;		/* start tree index at AG height	*/
	int dn_agl2size;	/* l2 num of blks per alloc group	*/
	s64 dn_agfree[MAXAG];	/* per AG free count			*/

Annotation

Implementation Notes