fs/jfs/jfs_xtree.h

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

File Facts

System
Linux kernel
Corpus path
fs/jfs/jfs_xtree.h
Extension
.h
Size
2989 bytes
Lines
114
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 xadlist {
	s16 maxnxad;
	s16 nxad;
	xad_t *xad;
};

/* xad_t flags */
#define XAD_NEW		0x01	/* new */
#define XAD_EXTENDED	0x02	/* extended */
#define XAD_COMPRESSED	0x04	/* compressed with recorded length */
#define XAD_NOTRECORDED 0x08	/* allocated but not recorded */
#define XAD_COW		0x10	/* copy-on-write */


/* possible values for maxentry */
#define XTROOTINITSLOT_DIR 6
#define XTROOTINITSLOT	10
#define XTROOTMAXSLOT	18
#define XTPAGEMAXSLOT	256
#define XTENTRYSTART	2

struct xtheader {
	__le64 next;	/* 8: */
	__le64 prev;	/* 8: */

	u8 flag;	/* 1: */
	u8 rsrvd1;	/* 1: */
	__le16 nextindex;	/* 2: next index = number of entries */
	__le16 maxentry;	/* 2: max number of entries */
	__le16 rsrvd2;	/* 2: */

	pxd_t self;	/* 8: self */
};

/*
 *	xtree root (in inode):
 */
typedef union {
	struct xtheader header;
	xad_t xad[XTROOTMAXSLOT];	/* 16 * maxentry: xad array */
} xtroot_t;

/*
 *	xtree page:
 */
typedef union {
	struct xtheader header;
	xad_t xad[XTPAGEMAXSLOT];	/* 16 * maxentry: xad array */
} xtpage_t;

/*
 *	external declaration
 */
extern int xtLookup(struct inode *ip, s64 lstart, s64 llen,
		    int *pflag, s64 * paddr, int *plen, int flag);
extern void xtInitRoot(tid_t tid, struct inode *ip);
extern int xtInsert(tid_t tid, struct inode *ip,
		    int xflag, s64 xoff, int xlen, s64 * xaddrp, int flag);
extern int xtExtend(tid_t tid, struct inode *ip, s64 xoff, int xlen,
		    int flag);
extern int xtUpdate(tid_t tid, struct inode *ip, struct xad *nxad);
extern s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int type);
extern s64 xtTruncate_pmap(tid_t tid, struct inode *ip, s64 committed_size);
extern int xtAppend(tid_t tid,
		    struct inode *ip, int xflag, s64 xoff, int maxblocks,
		    int *xlenp, s64 * xaddrp, int flag);
#endif				/* !_H_JFS_XTREE */

Annotation

Implementation Notes