bug-hurd
[Top][All Lists]
Advanced

[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 -+-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]