32 #define EXT2_PREALLOCATE 33 #define EXT2_DEFAULT_PREALLOC_BLOCKS 8 38 #define EXT2FS_DATE "95/08/09" 39 #define EXT2FS_VERSION "0.5b" 44 #define EXT2_BAD_INO 1 45 #define EXT2_ROOT_INO 2 46 #define EXT2_ACL_IDX_INO 3 47 #define EXT2_ACL_DATA_INO 4 48 #define EXT2_BOOT_LOADER_INO 5 49 #define EXT2_UNDEL_DIR_INO 6 50 #define EXT2_RESIZE_INO 7 51 #define EXT2_JOURNAL_INO 8 54 #define EXT2_GOOD_OLD_FIRST_INO 11 59 #define EXT2_SUPER_MAGIC 0xEF53 64 #define EXT2_LINK_MAX 32000 69 #define EXT2_MIN_BLOCK_SIZE 1024 70 #define EXT2_MAX_BLOCK_SIZE 4096 71 #define EXT2_MIN_BLOCK_LOG_SIZE 10 73 # define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize) 75 # define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size) 77 #define EXT2_ACLE_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_acl_entry)) 78 #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) 80 # define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_blocksize_bits) 82 # define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) 85 #define EXT2_ADDR_PER_BLOCK_BITS(s) ((s)->u.ext2_sb.s_addr_per_block_bits) 86 #define EXT2_INODE_SIZE(s) ((s)->u.ext2_sb.s_inode_size) 87 #define EXT2_FIRST_INO(s) ((s)->u.ext2_sb.s_first_ino) 89 #define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ 90 EXT2_GOOD_OLD_INODE_SIZE : \ 92 #define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ 93 EXT2_GOOD_OLD_FIRST_INO : \ 100 #define EXT2_MIN_FRAG_SIZE 1024 101 #define EXT2_MAX_FRAG_SIZE 4096 102 #define EXT2_MIN_FRAG_LOG_SIZE 10 104 # define EXT2_FRAG_SIZE(s) ((s)->u.ext2_sb.s_frag_size) 105 # define EXT2_FRAGS_PER_BLOCK(s) ((s)->u.ext2_sb.s_frags_per_block) 107 # define EXT2_FRAG_SIZE(s) (EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size) 108 # define EXT2_FRAGS_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s)) 183 # define EXT2_BLOCKS_PER_GROUP(s) ((s)->u.ext2_sb.s_blocks_per_group) 184 # define EXT2_DESC_PER_BLOCK(s) ((s)->u.ext2_sb.s_desc_per_block) 185 # define EXT2_INODES_PER_GROUP(s) ((s)->u.ext2_sb.s_inodes_per_group) 186 # define EXT2_DESC_PER_BLOCK_BITS(s) ((s)->u.ext2_sb.s_desc_per_block_bits) 188 # define EXT2_BLOCKS_PER_GROUP(s) ((s)->s_blocks_per_group) 189 # define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc)) 190 # define EXT2_INODES_PER_GROUP(s) ((s)->s_inodes_per_group) 196 #define EXT2_NDIR_BLOCKS 12 197 #define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS 198 #define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1) 199 #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) 200 #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) 205 #define EXT2_SECRM_FL 0x00000001 206 #define EXT2_UNRM_FL 0x00000002 207 #define EXT2_COMPR_FL 0x00000004 208 #define EXT2_SYNC_FL 0x00000008 209 #define EXT2_IMMUTABLE_FL 0x00000010 210 #define EXT2_APPEND_FL 0x00000020 211 #define EXT2_NODUMP_FL 0x00000040 212 #define EXT2_NOATIME_FL 0x00000080 214 #define EXT2_DIRTY_FL 0x00000100 215 #define EXT2_COMPRBLK_FL 0x00000200 216 #define EXT2_NOCOMPR_FL 0x00000400 217 #define EXT2_ECOMPR_FL 0x00000800 219 #define EXT2_BTREE_FL 0x00001000 220 #define EXT2_INDEX_FL 0x00001000 221 #define EXT2_IMAGIC_FL 0x00002000 222 #define EXT3_JOURNAL_DATA_FL 0x00004000 223 #define EXT2_NOTAIL_FL 0x00008000 224 #define EXT2_RESERVED_FL 0x80000000 226 #define EXT2_FL_USER_VISIBLE 0x0000DFFF 227 #define EXT2_FL_USER_MODIFIABLE 0x000080FF 232 #define EXT2_IOC_GETFLAGS _IOR('f', 1, long) 233 #define EXT2_IOC_SETFLAGS _IOW('f', 2, long) 234 #define EXT2_IOC_GETVERSION _IOR('v', 1, long) 235 #define EXT2_IOC_SETVERSION _IOW('v', 2, long) 294 #define i_size_high i_dir_acl 296 #if defined(__KERNEL__) || defined(__linux__) 297 #define i_reserved1 osd1.linux1.l_i_reserved1 298 #define i_frag osd2.linux2.l_i_frag 299 #define i_fsize osd2.linux2.l_i_fsize 300 #define i_uid_low i_uid 301 #define i_gid_low i_gid 302 #define i_uid_high osd2.linux2.l_i_uid_high 303 #define i_gid_high osd2.linux2.l_i_gid_high 304 #define i_reserved2 osd2.linux2.l_i_reserved2 306 #elif defined(__GNU__) 308 #define i_translator osd1.hurd1.h_i_translator 309 #define i_frag osd2.hurd2.h_i_frag; 310 #define i_fsize osd2.hurd2.h_i_fsize; 311 #define i_uid_high osd2.hurd2.h_i_uid_high 312 #define i_gid_high osd2.hurd2.h_i_gid_high 313 #define i_author osd2.hurd2.h_i_author 315 #elif defined(__masix__) 317 #define i_reserved1 osd1.masix1.m_i_reserved1 318 #define i_frag osd2.masix2.m_i_frag 319 #define i_fsize osd2.masix2.m_i_fsize 320 #define i_reserved2 osd2.masix2.m_i_reserved2 327 #define EXT2_VALID_FS 0x0001 328 #define EXT2_ERROR_FS 0x0002 333 #define EXT2_MOUNT_CHECK 0x0001 334 #define EXT2_MOUNT_GRPID 0x0004 335 #define EXT2_MOUNT_DEBUG 0x0008 336 #define EXT2_MOUNT_ERRORS_CONT 0x0010 337 #define EXT2_MOUNT_ERRORS_RO 0x0020 338 #define EXT2_MOUNT_ERRORS_PANIC 0x0040 339 #define EXT2_MOUNT_MINIX_DF 0x0080 340 #define EXT2_MOUNT_NO_UID32 0x0200 342 #define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt 343 #define set_opt(o, opt) o |= EXT2_MOUNT_##opt 344 #define test_opt(sb, opt) ((sb)->u.ext2_sb.s_mount_opt & \ 349 #define EXT2_DFL_MAX_MNT_COUNT 20 350 #define EXT2_DFL_CHECKINTERVAL 0 355 #define EXT2_ERRORS_CONTINUE 1 356 #define EXT2_ERRORS_RO 2 357 #define EXT2_ERRORS_PANIC 3 358 #define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE 431 #define EXT2_SB(sb) (&((sb)->u.ext2_sb)) 436 #define EXT2_SB(sb) (sb) 442 #define EXT2_OS_LINUX 0 443 #define EXT2_OS_HURD 1 444 #define EXT2_OS_MASIX 2 445 #define EXT2_OS_FREEBSD 3 446 #define EXT2_OS_LITES 4 447 #define EXT2_OS_WINNT 5 452 #define EXT2_GOOD_OLD_REV 0 453 #define EXT2_DYNAMIC_REV 1 455 #define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV 456 #define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV 458 #define EXT2_GOOD_OLD_INODE_SIZE 128 464 #define EXT2_HAS_COMPAT_FEATURE(sb,mask) \ 465 ( EXT2_SB(sb)->s_feature_compat & (mask) ) 466 #define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask) \ 467 ( EXT2_SB(sb)->s_feature_ro_compat & (mask) ) 468 #define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \ 469 ( EXT2_SB(sb)->s_feature_incompat & (mask) ) 471 #define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 472 #define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 473 #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 474 #define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008 475 #define EXT2_FEATURE_COMPAT_RESIZE_INODE 0x0010 476 #define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 478 #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 479 #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 480 #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 482 #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 483 #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 484 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 485 #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 487 #define EXT2_FEATURE_COMPAT_SUPP 0 488 #define EXT2_FEATURE_INCOMPAT_SUPP EXT2_FEATURE_INCOMPAT_FILETYPE 489 #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ 490 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ 491 EXT2_FEATURE_RO_COMPAT_BTREE_DIR) 496 #define EXT2_DEF_RESUID 0 497 #define EXT2_DEF_RESGID 0 502 #define EXT2_NAME_LEN 255 529 #define EXT2_FT_UNKNOWN 0 530 #define EXT2_FT_REG_FILE 1 531 #define EXT2_FT_DIR 2 532 #define EXT2_FT_CHRDEV 3 533 #define EXT2_FT_BLKDEV 4 534 #define EXT2_FT_FIFO 5 535 #define EXT2_FT_SOCK 6 536 #define EXT2_FT_SYMLINK 7 538 #define EXT2_FT_MAX 8 545 #define EXT2_DIR_PAD 4 546 #define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) 547 #define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ 560 # define ATTRIB_NORET __attribute__((noreturn)) 561 # define NORET_AND noreturn, 564 extern int ext2_permission (
struct inode *,
int);
571 extern void ext2_free_blocks (
const struct inode *,
unsigned long,
573 extern unsigned long ext2_count_free_blocks (
struct super_block *);
574 extern void ext2_check_blocks_bitmap (
struct super_block *);
576 unsigned int block_group,
580 extern unsigned long ext2_count_free (
struct buffer_head *,
unsigned);
583 extern int ext2_check_dir_entry (
const char *,
struct inode *,
588 extern int ext2_read (
struct inode *,
struct file *,
char *,
int);
589 extern int ext2_write (
struct inode *,
struct file *,
char *,
int);
592 extern int ext2_sync_file (
struct file *,
struct dentry *,
int);
593 extern int ext2_fsync_inode (
struct inode *,
int);
597 extern void ext2_free_inode (
struct inode *);
598 extern unsigned long ext2_count_free_inodes (
struct super_block *);
599 extern void ext2_check_inodes_bitmap (
struct super_block *);
608 extern void ext2_put_inode (
struct inode *);
609 extern void ext2_delete_inode (
struct inode *);
610 extern int ext2_sync_inode (
struct inode *);
611 extern void ext2_discard_prealloc (
struct inode *);
614 extern int ext2_ioctl (
struct inode *,
struct file *,
unsigned int,
618 extern struct inode_operations ext2_dir_inode_operations;
621 extern void ext2_error (
struct super_block *,
const char *,
const char *, ...)
643 extern
struct file_operations ext2_dir_operations;
646 extern
struct inode_operations ext2_file_inode_operations;
647 extern
struct file_operations ext2_file_operations;
650 extern
struct inode_operations ext2_fast_symlink_inode_operations;
652 extern
struct address_space_operations ext2_aops;
__u32 s_feature_ro_compat
struct ext2_inode::@676::@680 masix1
struct ext2_inode::@676::@678 linux1
__u16 bg_free_inodes_count
struct ext2_inode::@677::@681 linux2
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
struct ext2_inode::@677::@683 masix2
void ext2_update_dynamic_rev(PEXT2_FILESYS fs)
__u32 i_block[EXT2_N_BLOCKS]
bool ext2_write_inode(PEXT2_FILESYS Ext2Sys, ULONG ino, ULONG offset, PVOID Buffer, ULONG size, PULONG dwReturn)
__u8 s_prealloc_dir_blocks
bool ext2_bg_has_super(PEXT2_SUPER_BLOCK pExt2Sb, int group_block)
__u32 s_free_blocks_count
bool ext2_read_inode(PEXT2_FILESYS Ext2Sys, ULONG ino, ULONG offset, PVOID Buffer, ULONG size, PULONG dwReturn)
__u16 bg_free_blocks_count
int statfs(const char *name, struct statfs *info)
bool ext2_new_block(PEXT2_FILESYS fs, ULONG goal, PEXT2_BLOCK_BITMAP map, ULONG *ret)
bool ext2_new_inode(PEXT2_FILESYS fs, ULONG dir, int mode, PEXT2_INODE_BITMAP map, ULONG *ret)
__u32 s_algorithm_usage_bitmap
struct ext2_inode::@676::@679 hurd1
__u32 s_free_inodes_count
struct ext2_inode::@677::@682 hurd2