[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 02/17] ext2fs: update ext2_fs.h header
From: |
Samuel Thibault |
Subject: |
Re: [PATCH 02/17] ext2fs: update ext2_fs.h header |
Date: |
Sun, 23 Jan 2022 10:52:09 +0100 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Applied except the debug parts which can still be useful, thanks!
Etienne Brateau, le dim. 23 janv. 2022 05:17:00 +0100, a ecrit:
> ---
> ext2fs/ext2_fs.h | 122 ++++++++++++++++++++++++++++++++++-------------
> ext2fs/ext2fs.h | 3 --
> 2 files changed, 89 insertions(+), 36 deletions(-)
>
> diff --git a/ext2fs/ext2_fs.h b/ext2fs/ext2_fs.h
> index 90b1418d..d1a972b7 100644
> --- a/ext2fs/ext2_fs.h
> +++ b/ext2fs/ext2_fs.h
> @@ -16,17 +16,10 @@
> #ifndef _LINUX_EXT2_FS_H
> #define _LINUX_EXT2_FS_H
>
> -/* #include <linux/types.h> */
> -
> /*
> * The second extended filesystem constants/structures
> */
>
> -/*
> - * Define EXT2FS_DEBUG to produce debug messages
> - */
> -#undef EXT2FS_DEBUG
> -
> /*
> * Define EXT2_PREALLOCATE to preallocate data blocks for expanding files
> */
> @@ -39,19 +32,6 @@
> #define EXT2FS_DATE "95/08/09"
> #define EXT2FS_VERSION "0.5b"
>
> -/*
> - * Debug code
> - */
> -#ifdef EXT2FS_DEBUG
> -# define ext2_debug(f, a...) { \
> - printk ("EXT2-fs DEBUG (%s, %d): %s:", \
> - __FILE__, __LINE__,
> __FUNCTION__); \
> - printk (f, ## a); \
> - }
> -#else
> -# define ext2_debug(f, a...) /**/
> -#endif
> -
> /*
> * Special inodes numbers
> */
> @@ -198,6 +178,11 @@ struct ext2_group_desc
> #define EXT2_ECOMPR_FL 0x00000800 /* Compression error
> */
> /* End compression flags --- maybe not all used */
> #define EXT2_BTREE_FL 0x00001000 /* btree format dir
> */
> +#define EXT2_IMAGIC_FL 0x00002000 /* AFS
> directory */
> +#define EXT2_JOURNAL_DATA_FL 0x00004000 /* Reserved for ext3 */
> +#define EXT2_NOTAIL_FL 0x00008000 /* file tail
> should not be merged */
> +#define EXT2_DIRSYNC_FL 0x00010000 /* dirsync
> behaviour (directories only) */
> +#define EXT2_TOPDIR_FL 0x00020000 /* Top of
> directory hierarchies*/
> #define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */
>
> #define EXT2_FL_USER_VISIBLE 0x00001FFF /* User visible flags */
> @@ -207,10 +192,11 @@ struct ext2_group_desc
> #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\
> EXT2_SYNC_FL | EXT2_NODUMP_FL |\
> EXT2_NOATIME_FL | EXT2_COMPRBLK_FL |\
> - EXT2_NOCOMP_FL)
> + EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\
> + EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL)
>
> /* Flags that are appropriate for regular files (all but dir-specific ones).
> */
> -#define EXT2_REG_FLMASK (~(0))
> +#define EXT2_REG_FLMASK (~(EXT2_DIRSYNC_FL | EXT2_TOPDIR_FL))
>
> /* Flags that are appropriate for non-directories/regular files. */
> #define EXT2_OTHER_FLMASK (EXT2_NODUMP_FL | EXT2_NOATIME_FL)
> @@ -233,6 +219,15 @@ static __inline__ __u32 ext2_mask_flags(mode_t mode,
> __u32 flags)
> #define EXT2_IOC_SETFLAGS _IOW('f', 2, long)
> #define EXT2_IOC_GETVERSION _IOR('v', 1, long)
> #define EXT2_IOC_SETVERSION _IOW('v', 2, long)
> +#define EXT2_IOC_GETRSVSZ _IOR('f', 5, long)
> +#define EXT2_IOC_SETRSVSZ _IOW('f', 6, long)
> +
> +
> +/*
> + * ioctl commands in 32 bit emulation
> + */
> +#define EXT2_IOC32_GETVERSION _IOR('v', 1, int)
> +#define EXT2_IOC32_SETVERSION _IOW('v', 2, int)
>
> /*
> * Structure of an inode on the disk
> @@ -329,17 +324,26 @@ struct ext2_inode {
> /*
> * Mount flags
> */
> -#define EXT2_MOUNT_CHECK_NORMAL 0x0001 /* Do some more checks
> */
> -#define EXT2_MOUNT_CHECK_STRICT 0x0002 /* Do again more checks
> */
> +#define EXT2_MOUNT_CHECK_NORMAL 0x000001 /* Do some more
> checks */
> +#define EXT2_MOUNT_CHECK_STRICT 0x000002 /* Do again
> more checks */
> #define EXT2_MOUNT_CHECK (EXT2_MOUNT_CHECK_NORMAL | \
> EXT2_MOUNT_CHECK_STRICT)
> -#define EXT2_MOUNT_GRPID 0x0004 /* Create files with
> directory's group */
> -#define EXT2_MOUNT_DEBUG 0x0008 /* Some debugging messages */
> -#define EXT2_MOUNT_ERRORS_CONT 0x0010 /* Continue on errors */
> -#define EXT2_MOUNT_ERRORS_RO 0x0020 /* Remount fs ro on errors */
> -#define EXT2_MOUNT_ERRORS_PANIC 0x0040 /* Panic on errors */
> -#define EXT2_MOUNT_MINIX_DF 0x0080 /* Mimics the Minix statfs */
> -#define EXT2_MOUNT_NO_UID32 0x0200 /* Disable 32-bit UIDs */
> +#define EXT2_MOUNT_OLDALLOC 0x000002 /* Don't use the new Orlov
> allocator */
> +#define EXT2_MOUNT_GRPID 0x000004 /* Create files with
> directory's group */
> +#define EXT2_MOUNT_DEBUG 0x000008 /* Some debugging
> messages */
> +#define EXT2_MOUNT_ERRORS_CONT 0x000010 /* Continue on
> errors */
> +#define EXT2_MOUNT_ERRORS_RO 0x000020 /* Remount fs ro on
> errors */
> +#define EXT2_MOUNT_ERRORS_PANIC 0x000040 /* Panic on
> errors */
> +#define EXT2_MOUNT_MINIX_DF 0x000080 /* Mimics the Minix
> statfs */
> +#define EXT2_MOUNT_NOBH 0x000100 /* No buffer_heads */
> +#define EXT2_MOUNT_NO_UID32 0x000200 /* Disable 32-bit UIDs */
> +#define EXT2_MOUNT_XATTR_USER 0x004000 /* Extended user
> attributes */
> +#define EXT2_MOUNT_POSIX_ACL 0x008000 /* POSIX Access Control Lists
> */
> +#define EXT2_MOUNT_XIP 0x010000 /* Obsolete, use DAX
> */
> +#define EXT2_MOUNT_USRQUOTA 0x020000 /* user quota */
> +#define EXT2_MOUNT_GRPQUOTA 0x040000 /* group quota */
> +#define EXT2_MOUNT_RESERVATION 0x080000 /* Preallocation */
> +#define EXT2_MOUNT_DAX 0x100000 /* Direct Access */
>
> #define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt
> #define set_opt(o, opt) o |= EXT2_MOUNT_##opt
> @@ -402,7 +406,7 @@ struct ext2_super_block {
> * things it doesn't understand...
> */
> __u32 s_first_ino; /* First non-reserved inode */
> - __u16 s_inode_size; /* size of inode structure */
> + __u16 s_inode_size; /* size of inode structure */
> __u16 s_block_group_nr; /* block group # of this superblock */
> __u32 s_feature_compat; /* compatible feature set */
> __u32 s_feature_incompat; /* incompatible feature set */
> @@ -418,7 +422,20 @@ struct ext2_super_block {
> __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/
> __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */
> __u16 s_padding1;
> - __u32 s_reserved[204]; /* Padding to the end of the block */
> + /*
> + * Journaling support valid if EXT3_FEATURE_COMPAT_HAS_JOURNAL set.
> + */
> + __u8 s_journal_uuid[16]; /* uuid of journal superblock */
> + __u32 s_journal_inum; /* inode number of journal file */
> + __u32 s_journal_dev; /* device number of journal file */
> + __u32 s_last_orphan; /* start of list of inodes to delete */
> + __u32 s_hash_seed[4]; /* HTREE hash seed */
> + __u8 s_def_hash_version; /* Default hash version to use */
> + __u8 s_reserved_char_pad;
> + __u16 s_reserved_word_pad;
> + __u32 s_default_mount_opts;
> + __u32 s_first_meta_bg; /* First metablock block group */
> + __u32 s_reserved[190]; /* Padding to the end of the block */
> };
>
> #ifdef __KERNEL__
> @@ -460,22 +477,46 @@ struct ext2_super_block {
> ( EXT2_SB(sb)->s_feature_ro_compat & (mask) )
> #define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \
> ( EXT2_SB(sb)->s_feature_incompat & (mask) )
> +#define EXT2_SET_COMPAT_FEATURE(sb,mask) \
> + EXT2_SB(sb)->s_es->s_feature_compat |= (mask)
> +#define EXT2_SET_RO_COMPAT_FEATURE(sb,mask) \
> + EXT2_SB(sb)->s_es->s_feature_ro_compat |= (mask)
> +#define EXT2_SET_INCOMPAT_FEATURE(sb,mask) \
> + EXT2_SB(sb)->s_es->s_feature_incompat |= (mask)
> +#define EXT2_CLEAR_COMPAT_FEATURE(sb,mask) \
> + EXT2_SB(sb)->s_es->s_feature_compat &= ~(mask)
> +#define EXT2_CLEAR_RO_COMPAT_FEATURE(sb,mask) \
> + EXT2_SB(sb)->s_es->s_feature_ro_compat &= ~(mask)
> +#define EXT2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
> + EXT2_SB(sb)->s_es->s_feature_incompat &= ~(mask)
>
> #define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001
> +#define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002
> +#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
> #define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008
> +#define EXT2_FEATURE_COMPAT_RESIZE_INO 0x0010
> +#define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020
> +#define EXT2_FEATURE_COMPAT_ANY 0xffffffff
>
> #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001
> #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
> #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004
> +#define EXT2_FEATURE_RO_COMPAT_ANY 0xffffffff
>
> #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
> #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
> +#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
> +#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008
> +#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010
> +#define EXT2_FEATURE_INCOMPAT_ANY 0xffffffff
>
> #define EXT2_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR
> #define EXT2_FEATURE_INCOMPAT_SUPP EXT2_FEATURE_INCOMPAT_FILETYPE
> #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
> EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
> EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
> +#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP
> +#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP
>
> /*
> * Default values for user and/or group using reserved blocks
> @@ -483,6 +524,20 @@ struct ext2_super_block {
> #define EXT2_DEF_RESUID 0
> #define EXT2_DEF_RESGID 0
>
> +/*
> + * Default mount options
> + */
> +#define EXT2_DEFM_DEBUG 0x0001
> +#define EXT2_DEFM_BSDGROUPS 0x0002
> +#define EXT2_DEFM_XATTR_USER 0x0004
> +#define EXT2_DEFM_ACL 0x0008
> +#define EXT2_DEFM_UID16 0x0010
> + /* Not used by ext2, but reserved for use by ext3 */
> +#define EXT3_DEFM_JMODE 0x0060
> +#define EXT3_DEFM_JMODE_DATA 0x0020
> +#define EXT3_DEFM_JMODE_ORDERED 0x0040
> +#define EXT3_DEFM_JMODE_WBACK 0x0060
> +
> /*
> * Structure of a directory entry
> */
> @@ -533,6 +588,7 @@ struct ext2_dir_entry_2 {
> #define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1)
> #define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \
> ~EXT2_DIR_ROUND)
> +#define EXT2_MAX_REC_LEN ((1<<16)-1)
>
> /*
> * second extended file system inode data in memory
> diff --git a/ext2fs/ext2fs.h b/ext2fs/ext2fs.h
> index bc60af7b..9f2b6907 100644
> --- a/ext2fs/ext2fs.h
> +++ b/ext2fs/ext2fs.h
> @@ -48,9 +48,6 @@ typedef int8_t __s8;
> #define i_mode_high osd2.hurd2.h_i_mode_high /* missing from ext2_fs.h */
>
>
> -/* If ext2_fs.h defined a debug routine, undef it and use our own. */
> -#undef ext2_debug
> -
> #ifdef EXT2FS_DEBUG
> #include <stdio.h>
> extern int ext2_debug_flag;
> --
> 2.34.1
>
>
--
Samuel
Moralité : le modem et le cablerouteur font comme les filles, ils
papotent toute la journée.
-+- RB in NPC : Et en plus, ils ne parlent que de bits -+-
- [PATCH 11/17] ext2fs: resolve a todo, check writability before writing, (continued)
- [PATCH 11/17] ext2fs: resolve a todo, check writability before writing, Etienne Brateau, 2022/01/22
- [PATCH 14/17] ext2fs: refactor add a method for dupplicated code, Etienne Brateau, 2022/01/22
- [PATCH 17/17] ext2fs: remove 2 unused functions, Etienne Brateau, 2022/01/22
- [PATCH 16/17] ext2fs: remove a commented block of code, Etienne Brateau, 2022/01/22
- [PATCH 02/17] ext2fs: update ext2_fs.h header, Etienne Brateau, 2022/01/22
- Re: [PATCH 02/17] ext2fs: update ext2_fs.h header,
Samuel Thibault <=
- [PATCH 13/17] ext2fs: remove a #define not_yet, Etienne Brateau, 2022/01/22
- [PATCH 12/17] ext2fs: detect and warn when filesystem is an ext3 fs, Etienne Brateau, 2022/01/22
- [PATCH 07/17] ext2fs: use macro to check flags, Etienne Brateau, 2022/01/22
- [PATCH 04/17] move to ext2_fs.h a #define, Etienne Brateau, 2022/01/22