Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *   Copyright (C) International Business Machines Corp., 2000-2001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #ifndef _H_JFS_DINODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #define _H_JFS_DINODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  *	jfs_dinode.h: on-disk inode manager
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #define INODESLOTSIZE		128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define L2INODESLOTSIZE		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define log2INODESIZE		9	/* log2(bytes per dinode) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  *	on-disk inode : 512 bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  * note: align 64-bit fields on 8-byte boundary.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) struct dinode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	 *	I. base area (128 bytes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	 *	------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	 * define generic/POSIX attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	__le32 di_inostamp;	/* 4: stamp to show inode belongs to fileset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	__le32 di_fileset;	/* 4: fileset number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	__le32 di_number;	/* 4: inode number, aka file serial number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	__le32 di_gen;		/* 4: inode generation number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	pxd_t di_ixpxd;		/* 8: inode extent descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	__le64 di_size;		/* 8: size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	__le64 di_nblocks;	/* 8: number of blocks allocated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	__le32 di_nlink;	/* 4: number of links to the object */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	__le32 di_uid;		/* 4: user id of owner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	__le32 di_gid;		/* 4: group id of owner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	__le32 di_mode;		/* 4: attribute, format and permission */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	struct timestruc_t di_atime;	/* 8: time last data accessed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	struct timestruc_t di_ctime;	/* 8: time last status changed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	struct timestruc_t di_mtime;	/* 8: time last data modified */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	struct timestruc_t di_otime;	/* 8: time created */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	dxd_t di_acl;		/* 16: acl descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	dxd_t di_ea;		/* 16: ea descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	__le32 di_next_index;	/* 4: Next available dir_table index */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	__le32 di_acltype;	/* 4: Type of ACL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	 *	Extension Areas.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	 *	Historically, the inode was partitioned into 4 128-byte areas,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	 *	the last 3 being defined as unions which could have multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	 *	uses.  The first 96 bytes had been completely unused until
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	 *	an index table was added to the directory.  It is now more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	 *	useful to describe the last 3/4 of the inode as a single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	 *	union.  We would probably be better off redesigning the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	 *	entire structure from scratch, but we don't want to break
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	 *	commonality with OS/2's JFS at this time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 			/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 			 * This table contains the information needed to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 			 * find a directory entry from a 32-bit index.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 			 * If the index is small enough, the table is inline,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 			 * otherwise, an x-tree root overlays this table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 			 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 			struct dir_table_slot _table[12]; /* 96: inline */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 			dtroot_t _dtroot;		/* 288: dtree root */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		} _dir;					/* (384) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define di_dirtable	u._dir._table
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define di_dtroot	u._dir._dtroot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define di_parent	di_dtroot.header.idotdot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define di_DASD		di_dtroot.header.DASD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 			union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 				u8 _data[96];		/* 96: unused */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 				struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 					void *_imap;	/* 4: unused */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 					__le32 _gengen;	/* 4: generator */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 				} _imap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 			} _u1;				/* 96: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define di_gengen	u._file._u1._imap._gengen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 			union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 				xtpage_t _xtroot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 				struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 					u8 unused[16];	/* 16: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 					dxd_t _dxd;	/* 16: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 					union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 						__le32 _rdev;	/* 4: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 						/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 						 * The fast symlink area
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 						 * is expected to overflow
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 						 * into _inlineea when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 						 * needed (which will clear
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 						 * INLINEEA).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 						 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 						u8 _fastsymlink[128];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 					} _u;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 					u8 _inlineea[128];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 				} _special;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 			} _u2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 		} _file;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define di_xtroot	u._file._u2._xtroot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define di_dxd		u._file._u2._special._dxd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define di_btroot	di_xtroot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define di_inlinedata	u._file._u2._special._u
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define di_rdev		u._file._u2._special._u._rdev
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define di_fastsymlink	u._file._u2._special._u._fastsymlink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define di_inlineea	u._file._u2._special._inlineea
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	} u;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) /* extended mode bits (on-disk inode di_mode) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define IFJOURNAL	0x00010000	/* journalled file */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define ISPARSE		0x00020000	/* sparse file enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define INLINEEA	0x00040000	/* inline EA area free */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define ISWAPFILE	0x00800000	/* file open for pager swap space */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) /* more extended mode bits: attributes for OS/2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define IREADONLY	0x02000000	/* no write access to file */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define IHIDDEN		0x04000000	/* hidden file */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define ISYSTEM		0x08000000	/* system file */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define IDIRECTORY	0x20000000	/* directory (shadow of real bit) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define IARCHIVE	0x40000000	/* file archive bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define INEWNAME	0x80000000	/* non-8.3 filename format */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define IRASH		0x4E000000	/* mask for changeable attributes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define ATTRSHIFT	25	/* bits to shift to move attribute
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 				   specification to mode position */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) /* extended attributes for Linux */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define JFS_NOATIME_FL		0x00080000 /* do not update atime */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define JFS_DIRSYNC_FL		0x00100000 /* dirsync behaviour */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define JFS_SYNC_FL		0x00200000 /* Synchronous updates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define JFS_SECRM_FL		0x00400000 /* Secure deletion */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define JFS_UNRM_FL		0x00800000 /* allow for undelete */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define JFS_APPEND_FL		0x01000000 /* writes to file may only append */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define JFS_IMMUTABLE_FL	0x02000000 /* Immutable file */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define JFS_FL_USER_VISIBLE	0x03F80000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define JFS_FL_USER_MODIFIABLE	0x03F80000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define JFS_FL_INHERIT		0x03C80000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) /* These are identical to EXT[23]_IOC_GETFLAGS/SETFLAGS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define JFS_IOC_GETFLAGS	_IOR('f', 1, long)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define JFS_IOC_SETFLAGS	_IOW('f', 2, long)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define JFS_IOC_GETFLAGS32	_IOR('f', 1, int)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define JFS_IOC_SETFLAGS32	_IOW('f', 2, int)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #endif /*_H_JFS_DINODE */