Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.14-rc7 276 lines 8.6 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Copyright (C) International Business Machines Corp., 2000-2003 4 */ 5#ifndef _H_JFS_FILSYS 6#define _H_JFS_FILSYS 7 8/* 9 * jfs_filsys.h 10 * 11 * file system (implementation-dependent) constants 12 * 13 * refer to <limits.h> for system wide implementation-dependent constants 14 */ 15 16/* 17 * file system option (superblock flag) 18 */ 19 20/* directory option */ 21#define JFS_UNICODE 0x00000001 /* unicode name */ 22 23/* mount time flags for error handling */ 24#define JFS_ERR_REMOUNT_RO 0x00000002 /* remount read-only */ 25#define JFS_ERR_CONTINUE 0x00000004 /* continue */ 26#define JFS_ERR_PANIC 0x00000008 /* panic */ 27#define JFS_ERR_MASK (JFS_ERR_REMOUNT_RO|JFS_ERR_CONTINUE|JFS_ERR_PANIC) 28 29/* Quota support */ 30#define JFS_USRQUOTA 0x00000010 31#define JFS_GRPQUOTA 0x00000020 32 33/* mount time flag to disable journaling to disk */ 34#define JFS_NOINTEGRITY 0x00000040 35 36/* mount time flag to enable TRIM to ssd disks */ 37#define JFS_DISCARD 0x00000080 38 39/* commit option */ 40#define JFS_COMMIT 0x00000f00 /* commit option mask */ 41#define JFS_GROUPCOMMIT 0x00000100 /* group (of 1) commit */ 42#define JFS_LAZYCOMMIT 0x00000200 /* lazy commit */ 43#define JFS_TMPFS 0x00000400 /* temporary file system - 44 * do not log/commit: 45 * Never implemented 46 */ 47 48/* log logical volume option */ 49#define JFS_INLINELOG 0x00000800 /* inline log within file system */ 50#define JFS_INLINEMOVE 0x00001000 /* inline log being moved */ 51 52/* Secondary aggregate inode table */ 53#define JFS_BAD_SAIT 0x00010000 /* current secondary ait is bad */ 54 55/* sparse regular file support */ 56#define JFS_SPARSE 0x00020000 /* sparse regular file */ 57 58/* DASD Limits F226941 */ 59#define JFS_DASD_ENABLED 0x00040000 /* DASD limits enabled */ 60#define JFS_DASD_PRIME 0x00080000 /* Prime DASD usage on boot */ 61 62/* big endian flag */ 63#define JFS_SWAP_BYTES 0x00100000 /* running on big endian computer */ 64 65/* Directory index */ 66#define JFS_DIR_INDEX 0x00200000 /* Persistent index for */ 67 68/* platform options */ 69#define JFS_LINUX 0x10000000 /* Linux support */ 70#define JFS_DFS 0x20000000 /* DCE DFS LFS support */ 71/* Never implemented */ 72 73#define JFS_OS2 0x40000000 /* OS/2 support */ 74/* case-insensitive name/directory support */ 75 76#define JFS_AIX 0x80000000 /* AIX support */ 77 78/* 79 * buffer cache configuration 80 */ 81/* page size */ 82#ifdef PSIZE 83#undef PSIZE 84#endif 85#define PSIZE 4096 /* page size (in byte) */ 86#define L2PSIZE 12 /* log2(PSIZE) */ 87#define POFFSET 4095 /* offset within page */ 88 89/* buffer page size */ 90#define BPSIZE PSIZE 91 92/* 93 * fs fundamental size 94 * 95 * PSIZE >= file system block size >= PBSIZE >= DISIZE 96 */ 97#define PBSIZE 512 /* physical block size (in byte) */ 98#define L2PBSIZE 9 /* log2(PBSIZE) */ 99 100#define DISIZE 512 /* on-disk inode size (in byte) */ 101#define L2DISIZE 9 /* log2(DISIZE) */ 102 103#define IDATASIZE 256 /* inode inline data size */ 104#define IXATTRSIZE 128 /* inode inline extended attribute size */ 105 106#define XTPAGE_SIZE 4096 107#define log2_PAGESIZE 12 108 109#define IAG_SIZE 4096 110#define IAG_EXTENT_SIZE 4096 111#define INOSPERIAG 4096 /* number of disk inodes per iag */ 112#define L2INOSPERIAG 12 /* l2 number of disk inodes per iag */ 113#define INOSPEREXT 32 /* number of disk inode per extent */ 114#define L2INOSPEREXT 5 /* l2 number of disk inode per extent */ 115#define IXSIZE (DISIZE * INOSPEREXT) /* inode extent size */ 116#define INOSPERPAGE 8 /* number of disk inodes per 4K page */ 117#define L2INOSPERPAGE 3 /* log2(INOSPERPAGE) */ 118 119#define IAGFREELIST_LWM 64 120 121#define INODE_EXTENT_SIZE IXSIZE /* inode extent size */ 122#define NUM_INODE_PER_EXTENT INOSPEREXT 123#define NUM_INODE_PER_IAG INOSPERIAG 124 125#define MINBLOCKSIZE 512 126#define L2MINBLOCKSIZE 9 127#define MAXBLOCKSIZE 4096 128#define L2MAXBLOCKSIZE 12 129#define MAXFILESIZE ((s64)1 << 52) 130 131#define JFS_LINK_MAX 0xffffffff 132 133/* Minimum number of bytes supported for a JFS partition */ 134#define MINJFS (0x1000000) 135#define MINJFSTEXT "16" 136 137/* 138 * file system block size -> physical block size 139 */ 140#define LBOFFSET(x) ((x) & (PBSIZE - 1)) 141#define LBNUMBER(x) ((x) >> L2PBSIZE) 142#define LBLK2PBLK(sb,b) ((b) << (sb->s_blocksize_bits - L2PBSIZE)) 143#define PBLK2LBLK(sb,b) ((b) >> (sb->s_blocksize_bits - L2PBSIZE)) 144/* size in byte -> last page number */ 145#define SIZE2PN(size) ( ((s64)((size) - 1)) >> (L2PSIZE) ) 146/* size in byte -> last file system block number */ 147#define SIZE2BN(size, l2bsize) ( ((s64)((size) - 1)) >> (l2bsize) ) 148 149/* 150 * fixed physical block address (physical block size = 512 byte) 151 * 152 * NOTE: since we can't guarantee a physical block size of 512 bytes the use of 153 * these macros should be removed and the byte offset macros used instead. 154 */ 155#define SUPER1_B 64 /* primary superblock */ 156#define AIMAP_B (SUPER1_B + 8) /* 1st extent of aggregate inode map */ 157#define AITBL_B (AIMAP_B + 16) /* 158 * 1st extent of aggregate inode table 159 */ 160#define SUPER2_B (AITBL_B + 32) /* 2ndary superblock pbn */ 161#define BMAP_B (SUPER2_B + 8) /* block allocation map */ 162 163/* 164 * SIZE_OF_SUPER defines the total amount of space reserved on disk for the 165 * superblock. This is not the same as the superblock structure, since all of 166 * this space is not currently being used. 167 */ 168#define SIZE_OF_SUPER PSIZE 169 170/* 171 * SIZE_OF_AG_TABLE defines the amount of space reserved to hold the AG table 172 */ 173#define SIZE_OF_AG_TABLE PSIZE 174 175/* 176 * SIZE_OF_MAP_PAGE defines the amount of disk space reserved for each page of 177 * the inode allocation map (to hold iag) 178 */ 179#define SIZE_OF_MAP_PAGE PSIZE 180 181/* 182 * fixed byte offset address 183 */ 184#define SUPER1_OFF 0x8000 /* primary superblock */ 185#define AIMAP_OFF (SUPER1_OFF + SIZE_OF_SUPER) 186 /* 187 * Control page of aggregate inode map 188 * followed by 1st extent of map 189 */ 190#define AITBL_OFF (AIMAP_OFF + (SIZE_OF_MAP_PAGE << 1)) 191 /* 192 * 1st extent of aggregate inode table 193 */ 194#define SUPER2_OFF (AITBL_OFF + INODE_EXTENT_SIZE) 195 /* 196 * secondary superblock 197 */ 198#define BMAP_OFF (SUPER2_OFF + SIZE_OF_SUPER) 199 /* 200 * block allocation map 201 */ 202 203/* 204 * The following macro is used to indicate the number of reserved disk blocks at 205 * the front of an aggregate, in terms of physical blocks. This value is 206 * currently defined to be 32K. This turns out to be the same as the primary 207 * superblock's address, since it directly follows the reserved blocks. 208 */ 209#define AGGR_RSVD_BLOCKS SUPER1_B 210 211/* 212 * The following macro is used to indicate the number of reserved bytes at the 213 * front of an aggregate. This value is currently defined to be 32K. This 214 * turns out to be the same as the primary superblock's byte offset, since it 215 * directly follows the reserved blocks. 216 */ 217#define AGGR_RSVD_BYTES SUPER1_OFF 218 219/* 220 * The following macro defines the byte offset for the first inode extent in 221 * the aggregate inode table. This allows us to find the self inode to find the 222 * rest of the table. Currently this value is 44K. 223 */ 224#define AGGR_INODE_TABLE_START AITBL_OFF 225 226/* 227 * fixed reserved inode number 228 */ 229/* aggregate inode */ 230#define AGGR_RESERVED_I 0 /* aggregate inode (reserved) */ 231#define AGGREGATE_I 1 /* aggregate inode map inode */ 232#define BMAP_I 2 /* aggregate block allocation map inode */ 233#define LOG_I 3 /* aggregate inline log inode */ 234#define BADBLOCK_I 4 /* aggregate bad block inode */ 235#define FILESYSTEM_I 16 /* 1st/only fileset inode in ait: 236 * fileset inode map inode 237 */ 238 239/* per fileset inode */ 240#define FILESET_RSVD_I 0 /* fileset inode (reserved) */ 241#define FILESET_EXT_I 1 /* fileset inode extension */ 242#define ROOT_I 2 /* fileset root inode */ 243#define ACL_I 3 /* fileset ACL inode */ 244 245#define FILESET_OBJECT_I 4 /* the first fileset inode available for a file 246 * or directory or link... 247 */ 248#define FIRST_FILESET_INO 16 /* the first aggregate inode which describes 249 * an inode. (To fsck this is also the first 250 * inode in part 2 of the agg inode table.) 251 */ 252 253/* 254 * directory configuration 255 */ 256#define JFS_NAME_MAX 255 257#define JFS_PATH_MAX BPSIZE 258 259 260/* 261 * file system state (superblock state) 262 */ 263#define FM_CLEAN 0x00000000 /* file system is unmounted and clean */ 264#define FM_MOUNT 0x00000001 /* file system is mounted cleanly */ 265#define FM_DIRTY 0x00000002 /* file system was not unmounted and clean 266 * when mounted or 267 * commit failure occurred while being mounted: 268 * fsck() must be run to repair 269 */ 270#define FM_LOGREDO 0x00000004 /* log based recovery (logredo()) failed: 271 * fsck() must be run to repair 272 */ 273#define FM_EXTENDFS 0x00000008 /* file system extendfs() in progress */ 274#define FM_STATE_MAX 0x0000000f /* max value of s_state */ 275 276#endif /* _H_JFS_FILSYS */