diff --git a/.e2fsprogs.metadata b/.e2fsprogs.metadata index cadf1a3..9ef2a76 100644 --- a/.e2fsprogs.metadata +++ b/.e2fsprogs.metadata @@ -1 +1 @@ -4f2ac3a153c23d57968632e12c944eeb50613c51 SOURCES/e2fsprogs-1.45.4.tar.xz +41dd6234aa5c148bd06571e6be013a807b3af7a0 SOURCES/e2fsprogs-1.45.6.tar.xz diff --git a/.gitignore b/.gitignore index 7dff4db..3a9f32e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/e2fsprogs-1.45.4.tar.xz +SOURCES/e2fsprogs-1.45.6.tar.xz diff --git a/SOURCES/e2fsprogs-1.45.4-Makefile.in-Disable-e2scrub.patch b/SOURCES/e2fsprogs-1.45.4-Makefile.in-Disable-e2scrub.patch deleted file mode 100644 index b5da68b..0000000 --- a/SOURCES/e2fsprogs-1.45.4-Makefile.in-Disable-e2scrub.patch +++ /dev/null @@ -1,38 +0,0 @@ -From bb566b0efe6179a1aa2dac6e3c05a12f59eac8a3 Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Sun, 15 Dec 2019 12:42:28 +0100 -Subject: [PATCH 2/2] Makefile.in: Disable e2scrub - -e2scrub system is still new and we're not ready to support it yet, so -just disbale it and not even build it. - -Signed-off-by: Lukas Czerner ---- - Makefile.in | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index b951c017..34e2048d 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -13,7 +13,6 @@ INSTALL = @INSTALL@ - @DEBUGFS_CMT@DEBUGFS_DIR= debugfs - @UUID_CMT@UUID_LIB_SUBDIR= lib/uuid - @BLKID_CMT@BLKID_LIB_SUBDIR= lib/blkid --@E2SCRUB_CMT@E2SCRUB_DIR= scrub - @ALL_CMT@SUPPORT_LIB_SUBDIR= lib/support - @ALL_CMT@E2P_LIB_SUBDIR= lib/e2p - @ALL_CMT@EXT2FS_LIB_SUBDIR= lib/ext2fs -@@ -21,8 +20,7 @@ INSTALL = @INSTALL@ - LIB_SUBDIRS=lib/et lib/ss $(E2P_LIB_SUBDIR) $(UUID_LIB_SUBDIR) \ - $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR) intl - --PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po \ -- $(E2SCRUB_DIR) -+PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po - - SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests - --- -2.21.0 - diff --git a/SOURCES/e2fsprogs-1.45.4-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch b/SOURCES/e2fsprogs-1.45.4-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch deleted file mode 100644 index 5afdf1f..0000000 --- a/SOURCES/e2fsprogs-1.45.4-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 6499a3eef9583d893a442372e1567d74ce5a045b Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Sun, 15 Dec 2019 14:39:46 +0100 -Subject: [PATCH] Revert "fuse2fs: install fuse2fs in /usr/bin instead of - /usr/sbin" - -This reverts commit b71150355dca5409cf8e82a7e715e459a795bbf8. ---- - debian/fuse2fs.install | 2 +- - misc/Makefile.in | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/debian/fuse2fs.install b/debian/fuse2fs.install -index 2ed4c3c0..cd37a70e 100644 ---- a/debian/fuse2fs.install -+++ b/debian/fuse2fs.install -@@ -1,2 +1,2 @@ --/usr/bin/fuse2fs -+/usr/sbin/fuse2fs - /usr/share/man/man1/fuse2fs.1 -diff --git a/misc/Makefile.in b/misc/Makefile.in -index f2554446..22c98489 100644 ---- a/misc/Makefile.in -+++ b/misc/Makefile.in -@@ -35,7 +35,7 @@ INSTALL = @INSTALL@ - SPROGS= mke2fs badblocks tune2fs dumpe2fs $(BLKID_PROG) logsave \ - $(E2IMAGE_PROG) @FSCK_PROG@ e2undo - USPROGS= mklost+found filefrag e2freefrag $(UUIDD_PROG) \ -- $(E4DEFRAG_PROG) $(E4CRYPT_PROG) -+ $(E4DEFRAG_PROG) $(E4CRYPT_PROG) $(FUSE_PROG) - SMANPAGES= tune2fs.8 mklost+found.8 mke2fs.8 dumpe2fs.8 badblocks.8 \ - e2label.8 $(FINDFS_MAN) $(BLKID_MAN) $(E2IMAGE_MAN) \ - logsave.8 filefrag.8 e2freefrag.8 e2undo.8 \ -@@ -43,7 +43,7 @@ SMANPAGES= tune2fs.8 mklost+found.8 mke2fs.8 dumpe2fs.8 badblocks.8 \ - e2mmpstatus.8 - FMANPAGES= mke2fs.conf.5 ext4.5 - --UPROGS= chattr lsattr $(FUSE_PROG) @UUID_CMT@ uuidgen -+UPROGS= chattr lsattr @UUID_CMT@ uuidgen - UMANPAGES= chattr.1 lsattr.1 @UUID_CMT@ uuidgen.1 - UMANPAGES+= @FUSE_CMT@ fuse2fs.1 - --- -2.21.0 - diff --git a/SOURCES/e2fsprogs-1.45.4-man-Add-note-about-RHEL8-supported-features-and-moun.patch b/SOURCES/e2fsprogs-1.45.4-man-Add-note-about-RHEL8-supported-features-and-moun.patch deleted file mode 100644 index b97c27b..0000000 --- a/SOURCES/e2fsprogs-1.45.4-man-Add-note-about-RHEL8-supported-features-and-moun.patch +++ /dev/null @@ -1,133 +0,0 @@ -From e571c0f64fe02f09472a1011b3f129f94b3ec4ed Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Wed, 18 Dec 2019 11:03:37 +0100 -Subject: [PATCH] man: Add note about RHEL8 supported features and mount - options - -Signed-off-by: Lukas Czerner ---- - misc/ext4.5.in | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ - misc/mke2fs.8.in | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 96 insertions(+) - -diff --git a/misc/ext4.5.in b/misc/ext4.5.in -index 1db61a5f..39b1412e 100644 ---- a/misc/ext4.5.in -+++ b/misc/ext4.5.in -@@ -19,6 +19,54 @@ previously intended for use with the ext2 and ext3 file systems can be - mounted using the ext4 file system driver, and indeed in many modern - Linux distributions, the ext4 file system driver has been configured - to handle mount requests for ext2 and ext3 file systems. -+.SH RED HAT ENTERPRISE LINUX 8 -+The Ext4 file system is fully supported by Red Hat when using default -+mke2fs and mount options. In addition, the following non-default mke2fs -+features and mount options are also fully supported. -+.SH "Non-default features:" -+project -+.br -+quota -+.br -+mmp -+.br -+.SH "Non-default mount options:" -+bsddf|minixdf -+.br -+grpid|bsdgroups and nogrpid|sysvgroups -+.br -+resgid=n and resuid=n -+.br -+errors={continue|remount-ro|panic} -+.br -+commit=nrsec -+.br -+max_batch_time=usec -+.br -+min_batch_time=usec -+.br -+grpquota|noquota|quota|usrquota -+.br -+prjquota -+.br -+dax -+.br -+lazytime|nolazytime -+.br -+discard|nodiscard -+.br -+init_itable|noinit_itable -+.br -+jqfmt={vfsold|vfsv0|vfsv1} -+.br -+usrjquota=aquota.user|grpjquota=aquota.group -+.PP -+For more information on features and mount options, see the -+.BR ext4 -+man page. Ext4 features and mount options not listed above may not be -+fully supported by Red Hat. If your workload requires a feature or mount -+option that is not fully in this Red Hat release, contact Red Hat support -+to evaluate it for inclusion in our supported list. - .SH FILE SYSTEM FEATURES - A file system formatted for ext2, ext3, or ext4 can have some - collection of the following file system feature flags enabled. Some of -diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in -index 5bcee25e..8297bc5b 100644 ---- a/misc/mke2fs.8.in -+++ b/misc/mke2fs.8.in -@@ -204,6 +204,54 @@ overridden by the options listed below, are controlled by the - configuration file. See the - .BR mke2fs.conf (5) - manual page for more details. -+.SH RED HAT ENTERPRISE LINUX 8 -+The Ext4 file system is fully supported by Red Hat when using default -+mke2fs and mount options. In addition, the following non-default mke2fs -+features and mount options are also fully supported. -+.SH "Non-default features:" -+project -+.br -+quota -+.br -+mmp -+.br -+.SH "Non-default mount options:" -+bsddf|minixdf -+.br -+grpid|bsdgroups and nogrpid|sysvgroups -+.br -+resgid=n and resuid=n -+.br -+errors={continue|remount-ro|panic} -+.br -+commit=nrsec -+.br -+max_batch_time=usec -+.br -+min_batch_time=usec -+.br -+grpquota|noquota|quota|usrquota -+.br -+prjquota -+.br -+dax -+.br -+lazytime|nolazytime -+.br -+discard|nodiscard -+.br -+init_itable|noinit_itable -+.br -+jqfmt={vfsold|vfsv0|vfsv1} -+.br -+usrjquota=aquota.user|grpjquota=aquota.group -+.PP -+For more information on features and mount options, see the -+.BR ext4 -+man page. Ext4 features and mount options not listed above may not be -+fully supported by Red Hat. If your workload requires a feature or mount -+option that is not fully in this Red Hat release, contact Red Hat support -+to evaluate it for inclusion in our supported list. - .SH OPTIONS - .TP - .BI \-b " block-size" --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.4-mke2fs.conf-Disable-fname_encoding-feature.patch b/SOURCES/e2fsprogs-1.45.4-mke2fs.conf-Disable-fname_encoding-feature.patch deleted file mode 100644 index 0419aa2..0000000 --- a/SOURCES/e2fsprogs-1.45.4-mke2fs.conf-Disable-fname_encoding-feature.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 007d212c3f6c4942185e53a41011d11585827033 Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Sun, 15 Dec 2019 12:05:41 +0100 -Subject: [PATCH 1/2] mke2fs.conf: Disable fname_encoding feature - -It's still rather new and we do not feel ready supporting it at the -moment, so just disable it. - -Signed-off-by: Lukas Czerner ---- - misc/mke2fs.conf.in | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in -index 00afd912..01e35cf8 100644 ---- a/misc/mke2fs.conf.in -+++ b/misc/mke2fs.conf.in -@@ -45,6 +45,3 @@ - blocksize = 4096 - inode_size = 128 - } -- --[options] -- fname_encoding = utf8 --- -2.21.0 - diff --git a/SOURCES/e2fsprogs-1.45.4-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch b/SOURCES/e2fsprogs-1.45.4-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch deleted file mode 100644 index 2956e7f..0000000 --- a/SOURCES/e2fsprogs-1.45.4-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 541e51dcf19433838aba7de11e6f3f124e6ef4da Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Tue, 17 Dec 2019 11:24:31 +0100 -Subject: [PATCH] mke2fs.conf: Introduce rhel6 and rhel7 fs_type - -Signed-off-by: Lukas Czerner ---- - misc/mke2fs.conf.in | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in -index 01e35cf8..a533b210 100644 ---- a/misc/mke2fs.conf.in -+++ b/misc/mke2fs.conf.in -@@ -14,6 +14,16 @@ - features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize - inode_size = 256 - } -+ rhel6_ext4 = { -+ features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -+ inode_size = 256 -+ enable_periodic_fsck = 1 -+ default_mntopts = "" -+ } -+ rhel7_ext4 = { -+ features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize,64bit -+ inode_size = 256 -+ } - small = { - blocksize = 1024 - inode_size = 128 --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-Fix-UBSan-when-shifting-1LL-63.patch b/SOURCES/e2fsprogs-1.45.5-Fix-UBSan-when-shifting-1LL-63.patch deleted file mode 100644 index bdc6164..0000000 --- a/SOURCES/e2fsprogs-1.45.5-Fix-UBSan-when-shifting-1LL-63.patch +++ /dev/null @@ -1,42 +0,0 @@ -From d7968909c6b503c3c96d36ae2a686b1b07308077 Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Mon, 4 Nov 2019 21:22:54 -0500 -Subject: [PATCH 03/10] Fix UBSan when shifting (1LL << 63) - -Signed-off-by: Theodore Ts'o ---- - lib/ext2fs/qcow2.h | 4 ++-- - misc/e2image.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/ext2fs/qcow2.h b/lib/ext2fs/qcow2.h -index 5576348a..b649c9cf 100644 ---- a/lib/ext2fs/qcow2.h -+++ b/lib/ext2fs/qcow2.h -@@ -30,8 +30,8 @@ - - #define QCOW_MAGIC (('Q' << 24) | ('F' << 16) | ('I' << 8) | 0xfb) - #define QCOW_VERSION 2 --#define QCOW_OFLAG_COPIED (1LL << 63) --#define QCOW_OFLAG_COMPRESSED (1LL << 62) -+#define QCOW_OFLAG_COPIED (1ULL << 63) -+#define QCOW_OFLAG_COMPRESSED (1ULL << 62) - - #define QCOW_COMPRESSED 1 - #define QCOW_ENCRYPTED 2 -diff --git a/misc/e2image.c b/misc/e2image.c -index 3c881fee..30f25432 100644 ---- a/misc/e2image.c -+++ b/misc/e2image.c -@@ -54,7 +54,7 @@ extern int optind; - #include "support/plausible.h" - #include "../version.h" - --#define QCOW_OFLAG_COPIED (1LL << 63) -+#define QCOW_OFLAG_COPIED (1ULL << 63) - #define NO_BLK ((blk64_t) -1) - - /* Image types */ --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch b/SOURCES/e2fsprogs-1.45.5-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch deleted file mode 100644 index 55db8f2..0000000 --- a/SOURCES/e2fsprogs-1.45.5-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch +++ /dev/null @@ -1,86 +0,0 @@ -From cff7039936d361a0ab1d76ef0c12b681f3be9172 Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Tue, 14 Jan 2020 09:49:31 +0100 -Subject: [PATCH 2/2] Revert "libext2fs: hide struct ext2fs_hashmap as an - internal implementation detail" - -This reverts commit ef54444e6d1da4b464c11e749c9643ed945a770b -because it breaks ABI. - -Signed-off-by: Lukas Czerner ---- - lib/ext2fs/hashmap.c | 16 ---------------- - lib/ext2fs/hashmap.h | 30 +++++++++++++++++++++--------- - 2 files changed, 21 insertions(+), 25 deletions(-) - -diff --git a/lib/ext2fs/hashmap.c b/lib/ext2fs/hashmap.c -index ffe61ce9..3d8ee814 100644 ---- a/lib/ext2fs/hashmap.c -+++ b/lib/ext2fs/hashmap.c -@@ -1,22 +1,6 @@ - #include "hashmap.h" - #include - --struct ext2fs_hashmap { -- uint32_t size; -- uint32_t(*hash)(const void *key, size_t len); -- void(*free)(void*); -- struct ext2fs_hashmap_entry *first; -- struct ext2fs_hashmap_entry *last; --#if __GNUC_PREREQ (4, 8) --#pragma GCC diagnostic push --#pragma GCC diagnostic ignored "-Wpedantic" --#endif -- struct ext2fs_hashmap_entry *entries[0]; --#if __GNUC_PREREQ (4, 8) --#pragma GCC diagnostic pop --#endif --}; -- - uint32_t ext2fs_djb2_hash(const void *str, size_t size) - { - int c; -diff --git a/lib/ext2fs/hashmap.h b/lib/ext2fs/hashmap.h -index dcfa7455..656d3d90 100644 ---- a/lib/ext2fs/hashmap.h -+++ b/lib/ext2fs/hashmap.h -@@ -13,15 +13,27 @@ - #endif - #endif - --struct ext2fs_hashmap; -- --struct ext2fs_hashmap_entry { -- void *data; -- const void *key; -- size_t key_len; -- struct ext2fs_hashmap_entry *next; -- struct ext2fs_hashmap_entry *list_next; -- struct ext2fs_hashmap_entry *list_prev; -+struct ext2fs_hashmap { -+ uint32_t size; -+ uint32_t(*hash)(const void *key, size_t len); -+ void(*free)(void*); -+ struct ext2fs_hashmap_entry *first; -+ struct ext2fs_hashmap_entry *last; -+ struct ext2fs_hashmap_entry { -+ void *data; -+ const void *key; -+ size_t key_len; -+ struct ext2fs_hashmap_entry *next; -+ struct ext2fs_hashmap_entry *list_next; -+ struct ext2fs_hashmap_entry *list_prev; -+#if __GNUC_PREREQ (4, 8) -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wpedantic" -+#endif -+ } *entries[0]; -+#if __GNUC_PREREQ (4, 8) -+#pragma GCC diagnostic pop -+#endif - }; - - struct ext2fs_hashmap *ext2fs_hashmap_create( --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch b/SOURCES/e2fsprogs-1.45.5-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch deleted file mode 100644 index 4318f12..0000000 --- a/SOURCES/e2fsprogs-1.45.5-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch +++ /dev/null @@ -1,1421 +0,0 @@ -From 48101b992aa733fe97bfefe2e43a29fca9e65748 Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Tue, 14 Jan 2020 09:49:19 +0100 -Subject: [PATCH 1/2] Revert "libext2fs: revamp bitmap types to fix LTO - warnings" - -This reverts commit 83d9ffccf3ee6ad4e165eeb6912acf1f6149be28 because it -breaks ABI. - -Signed-off-by: Lukas Czerner ---- - lib/ext2fs/bitmaps.c | 6 +- - lib/ext2fs/blkmap64_ba.c | 38 ++++---- - lib/ext2fs/blkmap64_rb.c | 38 ++++---- - lib/ext2fs/bmap64.h | 38 ++++---- - lib/ext2fs/ext2fs.h | 11 +-- - lib/ext2fs/gen_bitmap.c | 113 ++++++++--------------- - lib/ext2fs/gen_bitmap64.c | 185 ++++++++++++++++---------------------- - 7 files changed, 173 insertions(+), 256 deletions(-) - -diff --git a/lib/ext2fs/bitmaps.c b/lib/ext2fs/bitmaps.c -index e25db2c6..84021917 100644 ---- a/lib/ext2fs/bitmaps.c -+++ b/lib/ext2fs/bitmaps.c -@@ -125,7 +125,6 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs, - { - __u64 start, end, real_end; - ext2fs_generic_bitmap bmap; -- ext2fs_generic_bitmap_64 bmap64; - errcode_t retval; - - EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); -@@ -148,15 +147,14 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs, - end, real_end, descr, &bmap); - if (retval) - return retval; -- bmap64 = (ext2fs_generic_bitmap_64) bmap; -- bmap64->cluster_bits = 0; -+ bmap->cluster_bits = 0; - *ret = bmap; - return 0; - } - - int ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) bitmap; -+ ext2fs_generic_bitmap bmap = bitmap; - - if (!EXT2FS_IS_64_BITMAP(bmap)) - return 0; -diff --git a/lib/ext2fs/blkmap64_ba.c b/lib/ext2fs/blkmap64_ba.c -index 85cb38d2..3707a61e 100644 ---- a/lib/ext2fs/blkmap64_ba.c -+++ b/lib/ext2fs/blkmap64_ba.c -@@ -40,7 +40,7 @@ struct ext2fs_ba_private_struct { - - typedef struct ext2fs_ba_private_struct *ext2fs_ba_private; - --static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) -+static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap bitmap) - { - ext2fs_ba_private bp; - errcode_t retval; -@@ -69,7 +69,7 @@ static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) - } - - static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)), -- ext2fs_generic_bitmap_64 bitmap) -+ ext2fs_generic_bitmap bitmap) - { - ext2fs_ba_private bp; - errcode_t retval; -@@ -86,7 +86,7 @@ static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)), - return 0; - } - --static void ba_free_bmap(ext2fs_generic_bitmap_64 bitmap) -+static void ba_free_bmap(ext2fs_generic_bitmap bitmap) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; - -@@ -101,8 +101,8 @@ static void ba_free_bmap(ext2fs_generic_bitmap_64 bitmap) - bp = 0; - } - --static errcode_t ba_copy_bmap(ext2fs_generic_bitmap_64 src, -- ext2fs_generic_bitmap_64 dest) -+static errcode_t ba_copy_bmap(ext2fs_generic_bitmap src, -+ ext2fs_generic_bitmap dest) - { - ext2fs_ba_private src_bp = (ext2fs_ba_private) src->private; - ext2fs_ba_private dest_bp; -@@ -121,7 +121,7 @@ static errcode_t ba_copy_bmap(ext2fs_generic_bitmap_64 src, - return 0; - } - --static errcode_t ba_resize_bmap(ext2fs_generic_bitmap_64 bmap, -+static errcode_t ba_resize_bmap(ext2fs_generic_bitmap bmap, - __u64 new_end, __u64 new_real_end) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bmap->private; -@@ -162,7 +162,7 @@ static errcode_t ba_resize_bmap(ext2fs_generic_bitmap_64 bmap, - - } - --static int ba_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) -+static int ba_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; - blk64_t bitno = (blk64_t) arg; -@@ -170,7 +170,7 @@ static int ba_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) - return ext2fs_set_bit64(bitno - bitmap->start, bp->bitarray); - } - --static int ba_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) -+static int ba_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; - blk64_t bitno = (blk64_t) arg; -@@ -178,7 +178,7 @@ static int ba_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) - return ext2fs_clear_bit64(bitno - bitmap->start, bp->bitarray); - } - --static int ba_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) -+static int ba_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; - blk64_t bitno = (blk64_t) arg; -@@ -186,7 +186,7 @@ static int ba_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) - return ext2fs_test_bit64(bitno - bitmap->start, bp->bitarray); - } - --static void ba_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, -+static void ba_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, - unsigned int num) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; -@@ -197,7 +197,7 @@ static void ba_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, - ext2fs_fast_set_bit64(bitno + i - bitmap->start, bp->bitarray); - } - --static void ba_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, -+static void ba_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, - unsigned int num) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; -@@ -208,7 +208,7 @@ static void ba_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, - ext2fs_fast_clear_bit64(bitno + i - bitmap->start, bp->bitarray); - } - --static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, -+static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap, - __u64 start, unsigned int len) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; -@@ -282,7 +282,7 @@ static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, - } - - --static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap bitmap, - __u64 start, size_t num, void *in) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; -@@ -292,7 +292,7 @@ static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, - return 0; - } - --static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap bitmap, - __u64 start, size_t num, void *out) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; -@@ -302,7 +302,7 @@ static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, - return 0; - } - --static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap) -+static void ba_clear_bmap(ext2fs_generic_bitmap bitmap) - { - ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; - -@@ -311,20 +311,20 @@ static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap) - } - - #ifdef ENABLE_BMAP_STATS --static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap) -+static void ba_print_stats(ext2fs_generic_bitmap bitmap) - { - fprintf(stderr, "%16llu Bytes used by bitarray\n", - ((bitmap->real_end - bitmap->start) >> 3) + 1 + - sizeof(struct ext2fs_ba_private_struct)); - } - #else --static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused))) -+static void ba_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused))) - { - } - #endif - - /* Find the first zero bit between start and end, inclusive. */ --static errcode_t ba_find_first_zero(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t ba_find_first_zero(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out) - { - ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private; -@@ -398,7 +398,7 @@ static errcode_t ba_find_first_zero(ext2fs_generic_bitmap_64 bitmap, - } - - /* Find the first one bit between start and end, inclusive. */ --static errcode_t ba_find_first_set(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t ba_find_first_set(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out) - { - ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private; -diff --git a/lib/ext2fs/blkmap64_rb.c b/lib/ext2fs/blkmap64_rb.c -index 1fd55274..4cbfb1ed 100644 ---- a/lib/ext2fs/blkmap64_rb.c -+++ b/lib/ext2fs/blkmap64_rb.c -@@ -177,7 +177,7 @@ static void rb_free_extent(struct ext2fs_rb_private *bp, - ext2fs_free_mem(&ext); - } - --static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) -+static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap bitmap) - { - struct ext2fs_rb_private *bp; - errcode_t retval; -@@ -201,7 +201,7 @@ static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) - } - - static errcode_t rb_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)), -- ext2fs_generic_bitmap_64 bitmap) -+ ext2fs_generic_bitmap bitmap) - { - errcode_t retval; - -@@ -225,7 +225,7 @@ static void rb_free_tree(struct rb_root *root) - } - } - --static void rb_free_bmap(ext2fs_generic_bitmap_64 bitmap) -+static void rb_free_bmap(ext2fs_generic_bitmap bitmap) - { - struct ext2fs_rb_private *bp; - -@@ -236,8 +236,8 @@ static void rb_free_bmap(ext2fs_generic_bitmap_64 bitmap) - bp = 0; - } - --static errcode_t rb_copy_bmap(ext2fs_generic_bitmap_64 src, -- ext2fs_generic_bitmap_64 dest) -+static errcode_t rb_copy_bmap(ext2fs_generic_bitmap src, -+ ext2fs_generic_bitmap dest) - { - struct ext2fs_rb_private *src_bp, *dest_bp; - struct bmap_rb_extent *src_ext, *dest_ext; -@@ -302,7 +302,7 @@ static void rb_truncate(__u64 new_max, struct rb_root *root) - } - } - --static errcode_t rb_resize_bmap(ext2fs_generic_bitmap_64 bmap, -+static errcode_t rb_resize_bmap(ext2fs_generic_bitmap bmap, - __u64 new_end, __u64 new_real_end) - { - struct ext2fs_rb_private *bp; -@@ -575,7 +575,7 @@ static int rb_remove_extent(__u64 start, __u64 count, - return retval; - } - --static int rb_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) -+static int rb_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) - { - struct ext2fs_rb_private *bp; - int retval; -@@ -588,7 +588,7 @@ static int rb_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) - return retval; - } - --static int rb_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) -+static int rb_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) - { - struct ext2fs_rb_private *bp; - int retval; -@@ -603,7 +603,7 @@ static int rb_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) - } - - inline --static int rb_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) -+static int rb_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) - { - struct ext2fs_rb_private *bp; - -@@ -613,7 +613,7 @@ static int rb_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) - return rb_test_bit(bp, arg); - } - --static void rb_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, -+static void rb_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, - unsigned int num) - { - struct ext2fs_rb_private *bp; -@@ -625,7 +625,7 @@ static void rb_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, - check_tree(&bp->root, __func__); - } - --static void rb_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, -+static void rb_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, - unsigned int num) - { - struct ext2fs_rb_private *bp; -@@ -637,7 +637,7 @@ static void rb_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, - check_tree(&bp->root, __func__); - } - --static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, -+static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap, - __u64 start, unsigned int len) - { - struct rb_node *parent = NULL, **n; -@@ -693,7 +693,7 @@ static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, - return retval; - } - --static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap bitmap, - __u64 start, size_t num, void *in) - { - struct ext2fs_rb_private *bp; -@@ -739,7 +739,7 @@ static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, - return 0; - } - --static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap bitmap, - __u64 start, size_t num, void *out) - { - -@@ -804,7 +804,7 @@ static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, - return 0; - } - --static void rb_clear_bmap(ext2fs_generic_bitmap_64 bitmap) -+static void rb_clear_bmap(ext2fs_generic_bitmap bitmap) - { - struct ext2fs_rb_private *bp; - -@@ -817,7 +817,7 @@ static void rb_clear_bmap(ext2fs_generic_bitmap_64 bitmap) - check_tree(&bp->root, __func__); - } - --static errcode_t rb_find_first_zero(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t rb_find_first_zero(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out) - { - struct rb_node *parent = NULL, **n; -@@ -853,7 +853,7 @@ static errcode_t rb_find_first_zero(ext2fs_generic_bitmap_64 bitmap, - return 0; - } - --static errcode_t rb_find_first_set(ext2fs_generic_bitmap_64 bitmap, -+static errcode_t rb_find_first_set(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out) - { - struct rb_node *parent = NULL, **n; -@@ -902,7 +902,7 @@ static errcode_t rb_find_first_set(ext2fs_generic_bitmap_64 bitmap, - } - - #ifdef ENABLE_BMAP_STATS --static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap) -+static void rb_print_stats(ext2fs_generic_bitmap bitmap) - { - struct ext2fs_rb_private *bp; - struct rb_node *node = NULL; -@@ -963,7 +963,7 @@ static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap) - eff); - } - #else --static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused))) -+static void rb_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused))) - { - } - #endif -diff --git a/lib/ext2fs/bmap64.h b/lib/ext2fs/bmap64.h -index de334548..d8c7a3c3 100644 ---- a/lib/ext2fs/bmap64.h -+++ b/lib/ext2fs/bmap64.h -@@ -37,7 +37,7 @@ struct ext2_bmap_statistics { - }; - - --struct ext2fs_struct_generic_bitmap_64 { -+struct ext2fs_struct_generic_bitmap { - errcode_t magic; - ext2_filsys fs; - struct ext2_bitmap_ops *bitmap_ops; -@@ -53,8 +53,6 @@ struct ext2fs_struct_generic_bitmap_64 { - #endif - }; - --typedef struct ext2fs_struct_generic_bitmap_64 *ext2fs_generic_bitmap_64; -- - #define EXT2FS_IS_32_BITMAP(bmap) \ - (((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \ - ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \ -@@ -68,37 +66,37 @@ typedef struct ext2fs_struct_generic_bitmap_64 *ext2fs_generic_bitmap_64; - struct ext2_bitmap_ops { - int type; - /* Generic bmap operators */ -- errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap_64 bmap); -- void (*free_bmap)(ext2fs_generic_bitmap_64 bitmap); -- errcode_t (*copy_bmap)(ext2fs_generic_bitmap_64 src, -- ext2fs_generic_bitmap_64 dest); -- errcode_t (*resize_bmap)(ext2fs_generic_bitmap_64 bitmap, -+ errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap bmap); -+ void (*free_bmap)(ext2fs_generic_bitmap bitmap); -+ errcode_t (*copy_bmap)(ext2fs_generic_bitmap src, -+ ext2fs_generic_bitmap dest); -+ errcode_t (*resize_bmap)(ext2fs_generic_bitmap bitmap, - __u64 new_end, - __u64 new_real_end); - /* bit set/test operators */ -- int (*mark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg); -- int (*unmark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg); -- int (*test_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg); -- void (*mark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg, -+ int (*mark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg); -+ int (*unmark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg); -+ int (*test_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg); -+ void (*mark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg, - unsigned int num); -- void (*unmark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg, -+ void (*unmark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg, - unsigned int num); -- int (*test_clear_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, -+ int (*test_clear_bmap_extent)(ext2fs_generic_bitmap bitmap, - __u64 arg, unsigned int num); -- errcode_t (*set_bmap_range)(ext2fs_generic_bitmap_64 bitmap, -+ errcode_t (*set_bmap_range)(ext2fs_generic_bitmap bitmap, - __u64 start, size_t num, void *in); -- errcode_t (*get_bmap_range)(ext2fs_generic_bitmap_64 bitmap, -+ errcode_t (*get_bmap_range)(ext2fs_generic_bitmap bitmap, - __u64 start, size_t num, void *out); -- void (*clear_bmap)(ext2fs_generic_bitmap_64 bitmap); -- void (*print_stats)(ext2fs_generic_bitmap_64); -+ void (*clear_bmap)(ext2fs_generic_bitmap bitmap); -+ void (*print_stats)(ext2fs_generic_bitmap); - - /* Find the first zero bit between start and end, inclusive. - * May be NULL, in which case a generic function is used. */ -- errcode_t (*find_first_zero)(ext2fs_generic_bitmap_64 bitmap, -+ errcode_t (*find_first_zero)(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out); - /* Find the first set bit between start and end, inclusive. - * May be NULL, in which case a generic function is used. */ -- errcode_t (*find_first_set)(ext2fs_generic_bitmap_64 bitmap, -+ errcode_t (*find_first_set)(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out); - }; - -diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h -index 59fd9742..c50a67cf 100644 ---- a/lib/ext2fs/ext2fs.h -+++ b/lib/ext2fs/ext2fs.h -@@ -111,14 +111,9 @@ typedef struct struct_ext2_filsys *ext2_filsys; - #define EXT2FS_UNMARK_ERROR 1 - #define EXT2FS_TEST_ERROR 2 - --struct ext2fs_struct_generic_bitmap_base { -- errcode_t magic; -- ext2_filsys fs; --}; -- --typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_generic_bitmap; --typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_inode_bitmap; --typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_block_bitmap; -+typedef struct ext2fs_struct_generic_bitmap *ext2fs_generic_bitmap; -+typedef struct ext2fs_struct_generic_bitmap *ext2fs_inode_bitmap; -+typedef struct ext2fs_struct_generic_bitmap *ext2fs_block_bitmap; - - #define EXT2_FIRST_INODE(s) EXT2_FIRST_INO(s) - -diff --git a/lib/ext2fs/gen_bitmap.c b/lib/ext2fs/gen_bitmap.c -index c94c21b6..674baa3e 100644 ---- a/lib/ext2fs/gen_bitmap.c -+++ b/lib/ext2fs/gen_bitmap.c -@@ -28,7 +28,7 @@ - #include "ext2_fs.h" - #include "ext2fsP.h" - --struct ext2fs_struct_generic_bitmap_32 { -+struct ext2fs_struct_generic_bitmap { - errcode_t magic; - ext2_filsys fs; - __u32 start, end; -@@ -39,8 +39,6 @@ struct ext2fs_struct_generic_bitmap_32 { - __u32 reserved[7]; - }; - --typedef struct ext2fs_struct_generic_bitmap_32 *ext2fs_generic_bitmap_32; -- - #define EXT2FS_IS_32_BITMAP(bmap) \ - (((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \ - ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \ -@@ -55,11 +53,9 @@ typedef struct ext2fs_struct_generic_bitmap_32 *ext2fs_generic_bitmap_32; - * Used by previously inlined function, so we have to export this and - * not change the function signature - */ --void ext2fs_warn_bitmap2(ext2fs_generic_bitmap gen_bitmap, -+void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap, - int code, unsigned long arg) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; -- - #ifndef OMIT_COM_ERR - if (bitmap->description) - com_err(0, bitmap->base_error_code+code, -@@ -83,11 +79,11 @@ errcode_t ext2fs_make_generic_bitmap(errcode_t magic, ext2_filsys fs, - const char *descr, char *init_map, - ext2fs_generic_bitmap *ret) - { -- ext2fs_generic_bitmap_32 bitmap; -+ ext2fs_generic_bitmap bitmap; - errcode_t retval; - size_t size; - -- retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap_32), -+ retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap), - &bitmap); - if (retval) - return retval; -@@ -131,7 +127,7 @@ errcode_t ext2fs_make_generic_bitmap(errcode_t magic, ext2_filsys fs, - memcpy(bitmap->bitmap, init_map, size); - else - memset(bitmap->bitmap, 0, size); -- *ret = (ext2fs_generic_bitmap) bitmap; -+ *ret = bitmap; - return 0; - } - -@@ -145,11 +141,9 @@ errcode_t ext2fs_allocate_generic_bitmap(__u32 start, - start, end, real_end, descr, 0, ret); - } - --errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap gen_src, -+errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap src, - ext2fs_generic_bitmap *dest) - { -- ext2fs_generic_bitmap_32 src = (ext2fs_generic_bitmap_32) gen_src; -- - return (ext2fs_make_generic_bitmap(src->magic, src->fs, - src->start, src->end, - src->real_end, -@@ -157,11 +151,9 @@ errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap gen_src, - dest)); - } - --void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap gen_bitmap) -+void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap bitmap) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; -- -- if (check_magic(gen_bitmap)) -+ if (check_magic(bitmap)) - return; - - bitmap->magic = 0; -@@ -179,8 +171,6 @@ void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap gen_bitmap) - int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap, - blk_t bitno) - { -- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; -- - if (!EXT2FS_IS_32_BITMAP(bitmap)) { - if (EXT2FS_IS_64_BITMAP(bitmap)) { - ext2fs_warn_bitmap32(bitmap, __func__); -@@ -193,18 +183,16 @@ int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap, - return 0; - } - -- if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) { -+ if ((bitno < bitmap->start) || (bitno > bitmap->end)) { - ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, bitno); - return 0; - } -- return ext2fs_test_bit(bitno - bitmap32->start, bitmap32->bitmap); -+ return ext2fs_test_bit(bitno - bitmap->start, bitmap->bitmap); - } - - int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap, - __u32 bitno) - { -- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; -- - if (!EXT2FS_IS_32_BITMAP(bitmap)) { - if (EXT2FS_IS_64_BITMAP(bitmap)) { - ext2fs_warn_bitmap32(bitmap, __func__); -@@ -217,18 +205,16 @@ int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap, - return 0; - } - -- if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) { -+ if ((bitno < bitmap->start) || (bitno > bitmap->end)) { - ext2fs_warn_bitmap2(bitmap, EXT2FS_MARK_ERROR, bitno); - return 0; - } -- return ext2fs_set_bit(bitno - bitmap32->start, bitmap32->bitmap); -+ return ext2fs_set_bit(bitno - bitmap->start, bitmap->bitmap); - } - - int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap, - blk_t bitno) - { -- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; -- - if (!EXT2FS_IS_32_BITMAP(bitmap)) { - if (EXT2FS_IS_64_BITMAP(bitmap)) { - ext2fs_warn_bitmap32(bitmap, __func__); -@@ -241,17 +227,15 @@ int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap, - return 0; - } - -- if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) { -+ if ((bitno < bitmap->start) || (bitno > bitmap->end)) { - ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR, bitno); - return 0; - } -- return ext2fs_clear_bit(bitno - bitmap32->start, bitmap32->bitmap); -+ return ext2fs_clear_bit(bitno - bitmap->start, bitmap->bitmap); - } - - __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap) - { -- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; -- - if (!EXT2FS_IS_32_BITMAP(bitmap)) { - if (EXT2FS_IS_64_BITMAP(bitmap)) { - ext2fs_warn_bitmap32(bitmap, __func__); -@@ -264,13 +248,11 @@ __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap) - return 0; - } - -- return bitmap32->start; -+ return bitmap->start; - } - - __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap) - { -- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; -- - if (!EXT2FS_IS_32_BITMAP(bitmap)) { - if (EXT2FS_IS_64_BITMAP(bitmap)) { - ext2fs_warn_bitmap32(bitmap, __func__); -@@ -282,13 +264,11 @@ __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap) - #endif - return 0; - } -- return bitmap32->end; -+ return bitmap->end; - } - - void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap) - { -- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; -- - if (!EXT2FS_IS_32_BITMAP(bitmap)) { - if (EXT2FS_IS_64_BITMAP(bitmap)) { - ext2fs_warn_bitmap32(bitmap, __func__); -@@ -302,16 +282,14 @@ void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap) - return; - } - -- memset(bitmap32->bitmap, 0, -- (size_t) (((bitmap32->real_end - bitmap32->start) / 8) + 1)); -+ memset(bitmap->bitmap, 0, -+ (size_t) (((bitmap->real_end - bitmap->start) / 8) + 1)); - } - --errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap gen_bitmap, -+errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap bitmap, - errcode_t magic, errcode_t neq, - ext2_ino_t end, ext2_ino_t *oend) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; -- - EXT2_CHECK_MAGIC(bitmap, magic); - - if (end > bitmap->real_end) -@@ -324,9 +302,8 @@ errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap gen_bitmap, - - errcode_t ext2fs_resize_generic_bitmap(errcode_t magic, - __u32 new_end, __u32 new_real_end, -- ext2fs_generic_bitmap gen_bmap) -+ ext2fs_generic_bitmap bmap) - { -- ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap; - errcode_t retval; - size_t size, new_size; - __u32 bitno; -@@ -367,11 +344,9 @@ errcode_t ext2fs_resize_generic_bitmap(errcode_t magic, - } - - errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq, -- ext2fs_generic_bitmap gen_bm1, -- ext2fs_generic_bitmap gen_bm2) -+ ext2fs_generic_bitmap bm1, -+ ext2fs_generic_bitmap bm2) - { -- ext2fs_generic_bitmap_32 bm1 = (ext2fs_generic_bitmap_32) gen_bm1; -- ext2fs_generic_bitmap_32 bm2 = (ext2fs_generic_bitmap_32) gen_bm2; - blk_t i; - - if (!bm1 || bm1->magic != magic) -@@ -386,16 +361,15 @@ errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq, - return neq; - - for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++) -- if (ext2fs_fast_test_block_bitmap(gen_bm1, i) != -- ext2fs_fast_test_block_bitmap(gen_bm2, i)) -+ if (ext2fs_fast_test_block_bitmap(bm1, i) != -+ ext2fs_fast_test_block_bitmap(bm2, i)) - return neq; - - return 0; - } - --void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap gen_map) -+void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap map) - { -- ext2fs_generic_bitmap_32 map = (ext2fs_generic_bitmap_32) gen_map; - __u32 i, j; - - /* Protect loop from wrap-around if map->real_end is maxed */ -@@ -405,13 +379,11 @@ void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap gen_map) - ext2fs_set_bit(j, map->bitmap); - } - --errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap, -+errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap bmap, - errcode_t magic, - __u32 start, __u32 num, - void *out) - { -- ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap; -- - if (!bmap || (bmap->magic != magic)) - return magic; - -@@ -422,13 +394,11 @@ errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap, - return 0; - } - --errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap, -+errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap bmap, - errcode_t magic, - __u32 start, __u32 num, - void *in) - { -- ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap; -- - if (!bmap || (bmap->magic != magic)) - return magic; - -@@ -462,11 +432,10 @@ int ext2fs_mem_is_zero(const char *mem, size_t len) - /* - * Return true if all of the bits in a specified range are clear - */ --static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap gen_bitmap, -+static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap bitmap, - unsigned int start, - unsigned int len) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; - size_t start_byte, len_byte = len >> 3; - unsigned int start_bit, len_bit = len % 8; - int first_bit = 0; -@@ -535,15 +504,14 @@ static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap gen_bitm - return ext2fs_mem_is_zero(ADDR + start_byte, len_byte); - } - --errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap gen_bitmap, -+errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap, - __u32 start, __u32 end, - __u32 *out) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; - blk_t b; - - if (start < bitmap->start || end > bitmap->end || start > end) { -- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start); -+ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start); - return EINVAL; - } - -@@ -559,15 +527,14 @@ errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap gen_bitmap - return ENOENT; - } - --errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap gen_bitmap, -+errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap bitmap, - __u32 start, __u32 end, - __u32 *out) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; - blk_t b; - - if (start < bitmap->start || end > bitmap->end || start > end) { -- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start); -+ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start); - return EINVAL; - } - -@@ -583,11 +550,9 @@ errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap gen_bitmap, - return ENOENT; - } - --int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, -+int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap, - blk_t block, int num) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; -- - EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_BLOCK_BITMAP); - if ((block < bitmap->start) || (block > bitmap->real_end) || - (block+num-1 > bitmap->real_end)) { -@@ -599,11 +564,9 @@ int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, - bitmap, block, num); - } - --int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap, -+int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap, - ext2_ino_t inode, int num) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; -- - EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_INODE_BITMAP); - if ((inode < bitmap->start) || (inode > bitmap->real_end) || - (inode+num-1 > bitmap->real_end)) { -@@ -615,10 +578,9 @@ int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap, - bitmap, inode, num); - } - --void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, -+void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap, - blk_t block, int num) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; - int i; - - if ((block < bitmap->start) || (block > bitmap->end) || -@@ -631,10 +593,9 @@ void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, - ext2fs_fast_set_bit(block + i - bitmap->start, bitmap->bitmap); - } - --void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, -- blk_t block, int num) -+void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap, -+ blk_t block, int num) - { -- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; - int i; - - if ((block < bitmap->start) || (block > bitmap->end) || -diff --git a/lib/ext2fs/gen_bitmap64.c b/lib/ext2fs/gen_bitmap64.c -index 6e4d8b71..47ba2baf 100644 ---- a/lib/ext2fs/gen_bitmap64.c -+++ b/lib/ext2fs/gen_bitmap64.c -@@ -68,7 +68,7 @@ - * e2fsck can request an encoding which is optimized for that. - */ - --static void warn_bitmap(ext2fs_generic_bitmap_64 bitmap, -+static void warn_bitmap(ext2fs_generic_bitmap bitmap, - int code, __u64 arg) - { - #ifndef OMIT_COM_ERR -@@ -93,7 +93,7 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, - const char *descr, - ext2fs_generic_bitmap *ret) - { -- ext2fs_generic_bitmap_64 bitmap; -+ ext2fs_generic_bitmap bitmap; - struct ext2_bitmap_ops *ops; - ext2_ino_t num_dirs; - errcode_t retval; -@@ -119,7 +119,7 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, - return EINVAL; - } - -- retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64), -+ retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap), - &bitmap); - if (retval) - return retval; -@@ -170,12 +170,12 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, - return retval; - } - -- *ret = (ext2fs_generic_bitmap) bitmap; -+ *ret = bitmap; - return 0; - } - - #ifdef ENABLE_BMAP_STATS --static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap_64 bitmap) -+static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap bitmap) - { - struct ext2_bmap_statistics *stats = &bitmap->stats; - #ifdef ENABLE_BMAP_STATS_OPS -@@ -241,15 +241,13 @@ static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap_64 bitmap) - } - #endif - --void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap) -+void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; -- - if (!bmap) - return; - - if (EXT2FS_IS_32_BITMAP(bmap)) { -- ext2fs_free_generic_bitmap(gen_bmap); -+ ext2fs_free_generic_bitmap(bmap); - return; - } - -@@ -273,25 +271,24 @@ void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap) - ext2fs_free_mem(&bmap); - } - --errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap gen_src, -+errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src, - ext2fs_generic_bitmap *dest) - { -- ext2fs_generic_bitmap_64 src = (ext2fs_generic_bitmap_64) gen_src; - char *descr, *new_descr; -- ext2fs_generic_bitmap_64 new_bmap; -+ ext2fs_generic_bitmap new_bmap; - errcode_t retval; - - if (!src) - return EINVAL; - - if (EXT2FS_IS_32_BITMAP(src)) -- return ext2fs_copy_generic_bitmap(gen_src, dest); -+ return ext2fs_copy_generic_bitmap(src, dest); - - if (!EXT2FS_IS_64_BITMAP(src)) - return EINVAL; - - /* Allocate a new bitmap struct */ -- retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64), -+ retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap), - &new_bmap); - if (retval) - return retval; -@@ -339,23 +336,21 @@ errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap gen_src, - return retval; - } - -- *dest = (ext2fs_generic_bitmap) new_bmap; -+ *dest = new_bmap; - - return 0; - } - --errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap gen_bmap, -+errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap, - __u64 new_end, - __u64 new_real_end) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; -- - if (!bmap) - return EINVAL; - - if (EXT2FS_IS_32_BITMAP(bmap)) -- return ext2fs_resize_generic_bitmap(gen_bmap->magic, new_end, -- new_real_end, gen_bmap); -+ return ext2fs_resize_generic_bitmap(bmap->magic, new_end, -+ new_real_end, bmap); - - if (!EXT2FS_IS_64_BITMAP(bmap)) - return EINVAL; -@@ -365,12 +360,10 @@ errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap gen_bmap, - return bmap->bitmap_ops->resize_bmap(bmap, new_end, new_real_end); - } - --errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap, -+errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap, - errcode_t neq, - __u64 end, __u64 *oend) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - if (!bitmap) - return EINVAL; - -@@ -378,8 +371,7 @@ errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap, - ext2_ino_t tmp_oend; - int retval; - -- retval = ext2fs_fudge_generic_bitmap_end(gen_bitmap, -- bitmap->magic, -+ retval = ext2fs_fudge_generic_bitmap_end(bitmap, bitmap->magic, - neq, end, &tmp_oend); - if (oend) - *oend = tmp_oend; -@@ -397,15 +389,13 @@ errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap, - return 0; - } - --__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap gen_bitmap) -+__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - if (!bitmap) - return EINVAL; - - if (EXT2FS_IS_32_BITMAP(bitmap)) -- return ext2fs_get_generic_bitmap_start(gen_bitmap); -+ return ext2fs_get_generic_bitmap_start(bitmap); - - if (!EXT2FS_IS_64_BITMAP(bitmap)) - return EINVAL; -@@ -413,15 +403,13 @@ __u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap gen_bitmap) - return bitmap->start; - } - --__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap) -+__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - if (!bitmap) - return EINVAL; - - if (EXT2FS_IS_32_BITMAP(bitmap)) -- return ext2fs_get_generic_bitmap_end(gen_bitmap); -+ return ext2fs_get_generic_bitmap_end(bitmap); - - if (!EXT2FS_IS_64_BITMAP(bitmap)) - return EINVAL; -@@ -429,31 +417,27 @@ __u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap) - return bitmap->end; - } - --void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap gen_bitmap) -+void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap bitmap) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - if (EXT2FS_IS_32_BITMAP(bitmap)) -- ext2fs_clear_generic_bitmap(gen_bitmap); -+ ext2fs_clear_generic_bitmap(bitmap); - else -- bitmap->bitmap_ops->clear_bmap(bitmap); -+ bitmap->bitmap_ops->clear_bmap (bitmap); - } - --int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, -+int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap, - __u64 arg) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - if (!bitmap) - return 0; - - if (EXT2FS_IS_32_BITMAP(bitmap)) { - if (arg & ~0xffffffffULL) { -- ext2fs_warn_bitmap2(gen_bitmap, -+ ext2fs_warn_bitmap2(bitmap, - EXT2FS_MARK_ERROR, 0xffffffff); - return 0; - } -- return ext2fs_mark_generic_bitmap(gen_bitmap, arg); -+ return ext2fs_mark_generic_bitmap(bitmap, arg); - } - - if (!EXT2FS_IS_64_BITMAP(bitmap)) -@@ -478,21 +462,19 @@ int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, - return bitmap->bitmap_ops->mark_bmap(bitmap, arg); - } - --int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, -+int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap, - __u64 arg) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - if (!bitmap) - return 0; - - if (EXT2FS_IS_32_BITMAP(bitmap)) { - if (arg & ~0xffffffffULL) { -- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_UNMARK_ERROR, -+ ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR, - 0xffffffff); - return 0; - } -- return ext2fs_unmark_generic_bitmap(gen_bitmap, arg); -+ return ext2fs_unmark_generic_bitmap(bitmap, arg); - } - - if (!EXT2FS_IS_64_BITMAP(bitmap)) -@@ -510,20 +492,19 @@ int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, - return bitmap->bitmap_ops->unmark_bmap(bitmap, arg); - } - --int ext2fs_test_generic_bmap(ext2fs_generic_bitmap gen_bitmap, -+int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap, - __u64 arg) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; - if (!bitmap) - return 0; - - if (EXT2FS_IS_32_BITMAP(bitmap)) { - if (arg & ~0xffffffffULL) { -- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, -+ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, - 0xffffffff); - return 0; - } -- return ext2fs_test_generic_bitmap(gen_bitmap, arg); -+ return ext2fs_test_generic_bitmap(bitmap, arg); - } - - if (!EXT2FS_IS_64_BITMAP(bitmap)) -@@ -548,22 +529,20 @@ int ext2fs_test_generic_bmap(ext2fs_generic_bitmap gen_bitmap, - return bitmap->bitmap_ops->test_bmap(bitmap, arg); - } - --errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, -+errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap, - __u64 start, unsigned int num, - void *in) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; -- - if (!bmap) - return EINVAL; - - if (EXT2FS_IS_32_BITMAP(bmap)) { - if ((start+num-1) & ~0xffffffffULL) { -- ext2fs_warn_bitmap2(gen_bmap, EXT2FS_UNMARK_ERROR, -+ ext2fs_warn_bitmap2(bmap, EXT2FS_UNMARK_ERROR, - 0xffffffff); - return EINVAL; - } -- return ext2fs_set_generic_bitmap_range(gen_bmap, bmap->magic, -+ return ext2fs_set_generic_bitmap_range(bmap, bmap->magic, - start, num, in); - } - -@@ -575,22 +554,20 @@ errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, - return bmap->bitmap_ops->set_bmap_range(bmap, start, num, in); - } - --errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, -+errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bmap, - __u64 start, unsigned int num, - void *out) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; -- - if (!bmap) - return EINVAL; - - if (EXT2FS_IS_32_BITMAP(bmap)) { - if ((start+num-1) & ~0xffffffffULL) { -- ext2fs_warn_bitmap2(gen_bmap, -+ ext2fs_warn_bitmap2(bmap, - EXT2FS_UNMARK_ERROR, 0xffffffff); - return EINVAL; - } -- return ext2fs_get_generic_bitmap_range(gen_bmap, bmap->magic, -+ return ext2fs_get_generic_bitmap_range(bmap, bmap->magic, - start, num, out); - } - -@@ -603,11 +580,9 @@ errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, - } - - errcode_t ext2fs_compare_generic_bmap(errcode_t neq, -- ext2fs_generic_bitmap gen_bm1, -- ext2fs_generic_bitmap gen_bm2) -+ ext2fs_generic_bitmap bm1, -+ ext2fs_generic_bitmap bm2) - { -- ext2fs_generic_bitmap_64 bm1 = (ext2fs_generic_bitmap_64) gen_bm1; -- ext2fs_generic_bitmap_64 bm2 = (ext2fs_generic_bitmap_64) gen_bm2; - blk64_t i; - - if (!bm1 || !bm2) -@@ -617,8 +592,7 @@ errcode_t ext2fs_compare_generic_bmap(errcode_t neq, - - /* Now we know both bitmaps have the same magic */ - if (EXT2FS_IS_32_BITMAP(bm1)) -- return ext2fs_compare_generic_bitmap(bm1->magic, neq, -- gen_bm1, gen_bm2); -+ return ext2fs_compare_generic_bitmap(bm1->magic, neq, bm1, bm2); - - if (!EXT2FS_IS_64_BITMAP(bm1)) - return EINVAL; -@@ -628,20 +602,19 @@ errcode_t ext2fs_compare_generic_bmap(errcode_t neq, - return neq; - - for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++) -- if (ext2fs_test_generic_bmap(gen_bm1, i) != -- ext2fs_test_generic_bmap(gen_bm2, i)) -+ if (ext2fs_test_generic_bmap(bm1, i) != -+ ext2fs_test_generic_bmap(bm2, i)) - return neq; - - return 0; - } - --void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap gen_bmap) -+void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; - __u64 start, num; - - if (EXT2FS_IS_32_BITMAP(bmap)) { -- ext2fs_set_generic_bitmap_padding(gen_bmap); -+ ext2fs_set_generic_bitmap_padding(bmap); - return; - } - -@@ -651,10 +624,9 @@ void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap gen_bmap) - /* XXX ought to warn on error */ - } - --int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, -+int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bmap, - blk64_t block, unsigned int num) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; - __u64 end = block + num; - - if (!bmap) -@@ -696,10 +668,9 @@ int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, - return bmap->bitmap_ops->test_clear_bmap_extent(bmap, block, num); - } - --void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, -+void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bmap, - blk64_t block, unsigned int num) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; - __u64 end = block + num; - - if (!bmap) -@@ -737,10 +708,9 @@ void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, - bmap->bitmap_ops->mark_bmap_extent(bmap, block, num); - } - --void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, -+void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bmap, - blk64_t block, unsigned int num) - { -- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; - __u64 end = block + num; - - if (!bmap) -@@ -778,10 +748,8 @@ void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, - bmap->bitmap_ops->unmark_bmap_extent(bmap, block, num); - } - --void ext2fs_warn_bitmap32(ext2fs_generic_bitmap gen_bitmap, const char *func) -+void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func) - { -- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; -- - #ifndef OMIT_COM_ERR - if (bitmap && bitmap->description) - com_err(0, EXT2_ET_MAGIC_GENERIC_BITMAP, -@@ -796,22 +764,21 @@ void ext2fs_warn_bitmap32(ext2fs_generic_bitmap gen_bitmap, const char *func) - errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, - ext2fs_block_bitmap *bitmap) - { -- ext2fs_generic_bitmap_64 bmap, cmap; -- ext2fs_block_bitmap gen_bmap = *bitmap, gen_cmap; -+ ext2fs_block_bitmap cmap, bmap; - errcode_t retval; - blk64_t i, b_end, c_end; - int n, ratio; - -- bmap = (ext2fs_generic_bitmap_64) gen_bmap; -- if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(gen_bmap)) -+ bmap = *bitmap; -+ -+ if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(bmap)) - return 0; /* Nothing to do */ - - retval = ext2fs_allocate_block_bitmap(fs, "converted cluster bitmap", -- &gen_cmap); -+ &cmap); - if (retval) - return retval; - -- cmap = (ext2fs_generic_bitmap_64) gen_cmap; - i = bmap->start; - b_end = bmap->end; - bmap->end = bmap->real_end; -@@ -820,8 +787,8 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, - n = 0; - ratio = 1 << fs->cluster_ratio_bits; - while (i < bmap->real_end) { -- if (ext2fs_test_block_bitmap2(gen_bmap, i)) { -- ext2fs_mark_block_bitmap2(gen_cmap, i); -+ if (ext2fs_test_block_bitmap2(bmap, i)) { -+ ext2fs_mark_block_bitmap2(cmap, i); - i += ratio - n; - n = 0; - continue; -@@ -832,15 +799,14 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, - } - bmap->end = b_end; - cmap->end = c_end; -- ext2fs_free_block_bitmap(gen_bmap); -- *bitmap = (ext2fs_block_bitmap) cmap; -+ ext2fs_free_block_bitmap(bmap); -+ *bitmap = cmap; - return 0; - } - - errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out) - { -- ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap; - __u64 cstart, cend, cout; - errcode_t retval; - -@@ -866,27 +832,27 @@ errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap, - if (!EXT2FS_IS_64_BITMAP(bitmap)) - return EINVAL; - -- cstart = start >> bmap64->cluster_bits; -- cend = end >> bmap64->cluster_bits; -+ cstart = start >> bitmap->cluster_bits; -+ cend = end >> bitmap->cluster_bits; - -- if (cstart < bmap64->start || cend > bmap64->end || start > end) { -- warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start); -+ if (cstart < bitmap->start || cend > bitmap->end || start > end) { -+ warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start); - return EINVAL; - } - -- if (bmap64->bitmap_ops->find_first_zero) { -- retval = bmap64->bitmap_ops->find_first_zero(bmap64, cstart, -+ if (bitmap->bitmap_ops->find_first_zero) { -+ retval = bitmap->bitmap_ops->find_first_zero(bitmap, cstart, - cend, &cout); - if (retval) - return retval; - found: -- cout <<= bmap64->cluster_bits; -+ cout <<= bitmap->cluster_bits; - *out = (cout >= start) ? cout : start; - return 0; - } - - for (cout = cstart; cout <= cend; cout++) -- if (!bmap64->bitmap_ops->test_bmap(bmap64, cout)) -+ if (!bitmap->bitmap_ops->test_bmap(bitmap, cout)) - goto found; - - return ENOENT; -@@ -895,7 +861,6 @@ errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap, - errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap, - __u64 start, __u64 end, __u64 *out) - { -- ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap; - __u64 cstart, cend, cout; - errcode_t retval; - -@@ -921,27 +886,27 @@ errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap, - if (!EXT2FS_IS_64_BITMAP(bitmap)) - return EINVAL; - -- cstart = start >> bmap64->cluster_bits; -- cend = end >> bmap64->cluster_bits; -+ cstart = start >> bitmap->cluster_bits; -+ cend = end >> bitmap->cluster_bits; - -- if (cstart < bmap64->start || cend > bmap64->end || start > end) { -- warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start); -+ if (cstart < bitmap->start || cend > bitmap->end || start > end) { -+ warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start); - return EINVAL; - } - -- if (bmap64->bitmap_ops->find_first_set) { -- retval = bmap64->bitmap_ops->find_first_set(bmap64, cstart, -+ if (bitmap->bitmap_ops->find_first_set) { -+ retval = bitmap->bitmap_ops->find_first_set(bitmap, cstart, - cend, &cout); - if (retval) - return retval; - found: -- cout <<= bmap64->cluster_bits; -+ cout <<= bitmap->cluster_bits; - *out = (cout >= start) ? cout : start; - return 0; - } - - for (cout = cstart; cout <= cend; cout++) -- if (bmap64->bitmap_ops->test_bmap(bmap64, cout)) -+ if (bitmap->bitmap_ops->test_bmap(bitmap, cout)) - goto found; - - return ENOENT; --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch b/SOURCES/e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch deleted file mode 100644 index e1f9146..0000000 --- a/SOURCES/e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 8a51e038d172c3405466ddb60d712c2ac934b954 Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Thu, 19 Dec 2019 19:37:34 -0500 -Subject: [PATCH 07/10] e2fsck: abort if there is a corrupted directory block - when rehashing - -In e2fsck pass 3a, when we are rehashing directories, at least in -theory, all of the directories should have had corruptions with -respect to directory entry structure fixed. However, it's possible -(for example, if the user declined a fix) that we can reach this stage -of processing with a corrupted directory entries. - -So check for that case and don't try to process a corrupted directory -block so we don't run into trouble in mutate_name() if there is a -zero-length file name. - -Addresses: TALOS-2019-0973 -Addresses: CVE-2019-5188 -Signed-off-by: Theodore Ts'o ---- - e2fsck/rehash.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c -index a5fc1be1..3dd1e941 100644 ---- a/e2fsck/rehash.c -+++ b/e2fsck/rehash.c -@@ -160,6 +160,10 @@ static int fill_dir_block(ext2_filsys fs, - dir_offset += rec_len; - if (dirent->inode == 0) - continue; -+ if ((name_len) == 0) { -+ fd->err = EXT2_ET_DIR_CORRUPTED; -+ return BLOCK_ABORT; -+ } - if (!fd->compress && (name_len == 1) && - (dirent->name[0] == '.')) - continue; -@@ -401,6 +405,11 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs, - continue; - } - new_len = ext2fs_dirent_name_len(ent->dir); -+ if (new_len == 0) { -+ /* should never happen */ -+ ext2fs_unmark_valid(fs); -+ continue; -+ } - memcpy(new_name, ent->dir->name, new_len); - mutate_name(new_name, &new_len); - for (j=0; j < fd->num_array; j++) { --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-e2fsck-don-t-check-for-future-superblock-times-if-ch.patch b/SOURCES/e2fsprogs-1.45.5-e2fsck-don-t-check-for-future-superblock-times-if-ch.patch deleted file mode 100644 index 47438f9..0000000 --- a/SOURCES/e2fsprogs-1.45.5-e2fsck-don-t-check-for-future-superblock-times-if-ch.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a9daa3b6b888c2834de9869ba8037c22ae8c47e5 Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Wed, 1 Jan 2020 21:50:27 -0500 -Subject: [PATCH 10/10] e2fsck: don't check for future superblock times if - checkinterval == 0 - -We are no longer enabling periodic file system checks by default in -mke2fs. The only reason why we force file system checks if the last -mount time or last write time in the superblock is if this might -bypass the periodic file systme checks. So if the checkinterval is -zero, skip the last mount/write time checks since there's no reason to -force a check just because the system clock is incorrect. - -Signed-off-by: Theodore Ts'o ---- - e2fsck/super.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/e2fsck/super.c b/e2fsck/super.c -index e5932be6..18affcf7 100644 ---- a/e2fsck/super.c -+++ b/e2fsck/super.c -@@ -1038,7 +1038,7 @@ void check_super_block(e2fsck_t ctx) - * Check to see if the superblock last mount time or last - * write time is in the future. - */ -- if (!broken_system_clock && -+ if (!broken_system_clock && fs->super->s_checkinterval && - !(ctx->flags & E2F_FLAG_TIME_INSANE) && - fs->super->s_mtime > (__u32) ctx->now) { - pctx.num = fs->super->s_mtime; -@@ -1050,7 +1050,7 @@ void check_super_block(e2fsck_t ctx) - fs->flags |= EXT2_FLAG_DIRTY; - } - } -- if (!broken_system_clock && -+ if (!broken_system_clock && fs->super->s_checkinterval && - !(ctx->flags & E2F_FLAG_TIME_INSANE) && - fs->super->s_wtime > (__u32) ctx->now) { - pctx.num = fs->super->s_wtime; --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-e2fsck-don-t-try-to-rehash-a-deleted-directory.patch b/SOURCES/e2fsprogs-1.45.5-e2fsck-don-t-try-to-rehash-a-deleted-directory.patch deleted file mode 100644 index 11a70e7..0000000 --- a/SOURCES/e2fsprogs-1.45.5-e2fsck-don-t-try-to-rehash-a-deleted-directory.patch +++ /dev/null @@ -1,46 +0,0 @@ -From c8bbee5fdc46876ec96be9c40831dcafadbcb983 Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Thu, 19 Dec 2019 19:45:06 -0500 -Subject: [PATCH 08/10] e2fsck: don't try to rehash a deleted directory - -If directory has been deleted in pass1[bcd] processing, then we -shouldn't try to rehash the directory in pass 3a when we try to -rehash/reoptimize directories. - -Signed-off-by: Theodore Ts'o ---- - e2fsck/pass1b.c | 4 ++++ - e2fsck/rehash.c | 2 ++ - 2 files changed, 6 insertions(+) - -diff --git a/e2fsck/pass1b.c b/e2fsck/pass1b.c -index 5693b9cf..bca701ca 100644 ---- a/e2fsck/pass1b.c -+++ b/e2fsck/pass1b.c -@@ -705,6 +705,10 @@ static void delete_file(e2fsck_t ctx, ext2_ino_t ino, - fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx); - if (ctx->inode_bad_map) - ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino); -+ if (ctx->inode_reg_map) -+ ext2fs_unmark_inode_bitmap2(ctx->inode_reg_map, ino); -+ ext2fs_unmark_inode_bitmap2(ctx->inode_dir_map, ino); -+ ext2fs_unmark_inode_bitmap2(ctx->inode_used_map, ino); - ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(dp->inode.i_mode)); - quota_data_sub(ctx->qctx, &dp->inode, ino, - pb.dup_blocks * fs->blocksize); -diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c -index 3dd1e941..2c908be0 100644 ---- a/e2fsck/rehash.c -+++ b/e2fsck/rehash.c -@@ -1028,6 +1028,8 @@ void e2fsck_rehash_directories(e2fsck_t ctx) - if (!ext2fs_u32_list_iterate(iter, &ino)) - break; - } -+ if (!ext2fs_test_inode_bitmap2(ctx->inode_dir_map, ino)) -+ continue; - - pctx.dir = ino; - if (first) { --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-e2fsck-fix-to-return-ENOMEM-in-alloc_size_dir.patch b/SOURCES/e2fsprogs-1.45.5-e2fsck-fix-to-return-ENOMEM-in-alloc_size_dir.patch deleted file mode 100644 index 16a15c4..0000000 --- a/SOURCES/e2fsprogs-1.45.5-e2fsck-fix-to-return-ENOMEM-in-alloc_size_dir.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4215866fa515f8f319ae602797984289248d8bfe Mon Sep 17 00:00:00 2001 -From: Wang Shilong -Date: Tue, 26 Nov 2019 18:03:58 +0900 -Subject: [PATCH] e2fsck: fix to return ENOMEM in alloc_size_dir() - -Two memory allocation return check is missed. - -Signed-off-by: Wang Shilong -Signed-off-by: Theodore Ts'o ---- - e2fsck/rehash.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c -index e0764d0b..54bc6803 100644 ---- a/e2fsck/rehash.c -+++ b/e2fsck/rehash.c -@@ -276,7 +276,11 @@ static errcode_t alloc_size_dir(ext2_filsys fs, struct out_dir *outdir, - outdir->hashes = new_mem; - } else { - outdir->buf = malloc(blocks * fs->blocksize); -+ if (!outdir->buf) -+ return ENOMEM; - outdir->hashes = malloc(blocks * sizeof(ext2_dirhash_t)); -+ if (!outdir->hashes) -+ return ENOMEM; - outdir->num = 0; - } - outdir->max = blocks; --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-e2fsck-fix-use-after-free-in-calculate_tree.patch b/SOURCES/e2fsprogs-1.45.5-e2fsck-fix-use-after-free-in-calculate_tree.patch deleted file mode 100644 index 758bd63..0000000 --- a/SOURCES/e2fsprogs-1.45.5-e2fsck-fix-use-after-free-in-calculate_tree.patch +++ /dev/null @@ -1,72 +0,0 @@ -From aa011a6deafa48b1015d402d7ec0bd40f9308109 Mon Sep 17 00:00:00 2001 -From: Wang Shilong -Date: Mon, 30 Dec 2019 19:52:39 -0500 -Subject: [PATCH 09/10] e2fsck: fix use after free in calculate_tree() - -The problem is alloc_blocks() will call get_next_block() which might -reallocate outdir->buf, and memory address could be changed after -this. To fix this, pointers that point into outdir->buf, such as -int_limit and root need to be recaulated based on the new starting -address of outdir->buf. - -[ Changed to correctly recalculate int_limit, and to optimize how we - reallocate outdir->buf. -TYT ] - -Signed-off-by: Wang Shilong -Signed-off-by: Theodore Ts'o ---- - e2fsck/rehash.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c -index 2c908be0..e0764d0b 100644 ---- a/e2fsck/rehash.c -+++ b/e2fsck/rehash.c -@@ -297,7 +297,11 @@ static errcode_t get_next_block(ext2_filsys fs, struct out_dir *outdir, - errcode_t retval; - - if (outdir->num >= outdir->max) { -- retval = alloc_size_dir(fs, outdir, outdir->max + 50); -+ int increment = outdir->max / 10; -+ -+ if (increment < 50) -+ increment = 50; -+ retval = alloc_size_dir(fs, outdir, outdir->max + increment); - if (retval) - return retval; - } -@@ -641,6 +645,9 @@ static int alloc_blocks(ext2_filsys fs, - if (retval) - return retval; - -+ /* outdir->buf might be reallocated */ -+ *prev_ent = (struct ext2_dx_entry *) (outdir->buf + *prev_offset); -+ - *next_ent = set_int_node(fs, block_start); - *limit = (struct ext2_dx_countlimit *)(*next_ent); - if (next_offset) -@@ -730,6 +737,9 @@ static errcode_t calculate_tree(ext2_filsys fs, - return retval; - } - if (c3 == 0) { -+ int delta1 = (char *)int_limit - outdir->buf; -+ int delta2 = (char *)root - outdir->buf; -+ - retval = alloc_blocks(fs, &limit, &int_ent, - &dx_ent, &int_offset, - NULL, outdir, i, &c2, -@@ -737,6 +747,11 @@ static errcode_t calculate_tree(ext2_filsys fs, - if (retval) - return retval; - -+ /* outdir->buf might be reallocated */ -+ int_limit = (struct ext2_dx_countlimit *) -+ (outdir->buf + delta1); -+ root = (struct ext2_dx_entry *) -+ (outdir->buf + delta2); - } - dx_ent->block = ext2fs_cpu_to_le32(i); - if (c3 != limit->limit) --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch b/SOURCES/e2fsprogs-1.45.5-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch deleted file mode 100644 index f1973df..0000000 --- a/SOURCES/e2fsprogs-1.45.5-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 687ba50f6dde0b753870fcd62be5ef30c75bb38f Mon Sep 17 00:00:00 2001 -From: Lukas Czerner -Date: Tue, 14 Jan 2020 20:56:41 +0100 -Subject: [PATCH] ext2fs: fix ABI change in the struct_ext2_filsys structure - -Upstream increased size of the struct_ext2_filsys structure by adding -new encoding member. However this represents ABI breakage within a major -RHEL release. To avoid it use some of the reserved space in the -struct_ext2_filsys structure. - -Signed-off-by: Lukas Czerner ---- - lib/ext2fs/ext2fs.h | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h -index c50a67cf..5bb9133a 100644 ---- a/lib/ext2fs/ext2fs.h -+++ b/lib/ext2fs/ext2fs.h -@@ -250,10 +250,17 @@ struct struct_ext2_filsys { - int cluster_ratio_bits; - __u16 default_bitmap_type; - __u16 pad; -+ -+ /* -+ * RedHat specific change to prevent ABI change by using 8 -+ * reserved bytes -+ */ -+ const struct ext2fs_nls_table *encoding; -+ - /* - * Reserved for future expansion - */ -- __u32 reserved[5]; -+ __u32 reserved[5 - (sizeof(long int)/4)]; - - /* - * Reserved for the use of the calling application. -@@ -304,8 +311,6 @@ struct struct_ext2_filsys { - - /* hashmap for SHA of data blocks */ - struct ext2fs_hashmap* block_sha_map; -- -- const struct ext2fs_nls_table *encoding; - }; - - #if EXT2_FLAT_INCLUDES --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-libext2fs-fix-UBSan-when-updating-an-inline_data-fil.patch b/SOURCES/e2fsprogs-1.45.5-libext2fs-fix-UBSan-when-updating-an-inline_data-fil.patch deleted file mode 100644 index 875709d..0000000 --- a/SOURCES/e2fsprogs-1.45.5-libext2fs-fix-UBSan-when-updating-an-inline_data-fil.patch +++ /dev/null @@ -1,39 +0,0 @@ -From bee65149cc025522ae0e2c37a0ce817641ebac28 Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Mon, 4 Nov 2019 18:43:49 -0500 -Subject: [PATCH 02/10] libext2fs: fix UBSan when updating an inline_data file - -What memcpy does when the length is zero is not well-defined. So -avoid it. - -Bug: https://github.com/tytso/e2fsprogs/issues/25 -Signed-off-by: Theodore Ts'o ---- - lib/ext2fs/ext_attr.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c -index 78a823a9..affc1a8f 100644 ---- a/lib/ext2fs/ext_attr.c -+++ b/lib/ext2fs/ext_attr.c -@@ -1550,14 +1550,15 @@ errcode_t ext2fs_xattr_set(struct ext2_xattr_handle *h, - new_value, &value_len); - if (ret) - goto out; -- } else -+ } else if (value_len) - memcpy(new_value, value, value_len); - - /* Imitate kernel behavior by skipping update if value is the same. */ - for (x = h->attrs; x < h->attrs + h->count; x++) { - if (!strcmp(x->name, name)) { - if (!x->ea_ino && x->value_len == value_len && -- !memcmp(x->value, new_value, value_len)) { -+ (!value_len || -+ !memcmp(x->value, new_value, value_len))) { - ret = 0; - goto out; - } --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-libext2fs-fix-bug-when-reading-or-writing-more-than-.patch b/SOURCES/e2fsprogs-1.45.5-libext2fs-fix-bug-when-reading-or-writing-more-than-.patch deleted file mode 100644 index 75ccd91..0000000 --- a/SOURCES/e2fsprogs-1.45.5-libext2fs-fix-bug-when-reading-or-writing-more-than-.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b989de221a8399d42aede6da03297cad3330f12a Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Mon, 4 Nov 2019 16:43:41 -0500 -Subject: [PATCH 01/10] libext2fs: fix bug when reading or writing more than - 2GB in unix_io - -If count * block_size exceeds 2GB, we will overflow a 32-bit signed -integer value. This shouldn't happen in practice except for -fuzz-corrupted file systems, but let's fix the code so it's correct. - -Bug: https://github.com/tytso/e2fsprogs/issues/24 -Signed-off-by: Theodore Ts'o ---- - lib/ext2fs/unix_io.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c -index 74fc8a75..628e60c3 100644 ---- a/lib/ext2fs/unix_io.c -+++ b/lib/ext2fs/unix_io.c -@@ -166,7 +166,7 @@ static errcode_t raw_read_blk(io_channel channel, - unsigned char *buf = bufv; - ssize_t really_read = 0; - -- size = (count < 0) ? -count : count * channel->block_size; -+ size = (count < 0) ? -count : (ext2_loff_t) count * channel->block_size; - data->io_stats.bytes_read += size; - location = ((ext2_loff_t) block * channel->block_size) + data->offset; - -@@ -275,7 +275,7 @@ static errcode_t raw_write_blk(io_channel channel, - if (count < 0) - size = -count; - else -- size = count * channel->block_size; -+ size = (ext2_loff_t) count * channel->block_size; - } - data->io_stats.bytes_written += size; - --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-libext2fs-properly-free-the-bitmaps-in-read_bitmap-s.patch b/SOURCES/e2fsprogs-1.45.5-libext2fs-properly-free-the-bitmaps-in-read_bitmap-s.patch deleted file mode 100644 index d5b21bf..0000000 --- a/SOURCES/e2fsprogs-1.45.5-libext2fs-properly-free-the-bitmaps-in-read_bitmap-s.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 764286ba7af40105ec9f27dba164fa53936c282f Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Fri, 8 Nov 2019 09:49:51 -0500 -Subject: [PATCH 04/10] libext2fs: properly free the bitmaps in read_bitmap()'s - error/cleanup path - -Use ext2fs_free_{block,inode}_bitmaps() instead of ext2fs_free_mem() -to avoid some memory leaks if there is an error while calling -read_bitmaps(). - -Signed-off-by: Theodore Ts'o ---- - lib/ext2fs/rw_bitmaps.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c -index f1c4188b..e092cab0 100644 ---- a/lib/ext2fs/rw_bitmaps.c -+++ b/lib/ext2fs/rw_bitmaps.c -@@ -396,11 +396,11 @@ success_cleanup: - - cleanup: - if (do_block) { -- ext2fs_free_mem(&fs->block_map); -+ ext2fs_free_block_bitmap(fs->block_map); - fs->block_map = 0; - } - if (do_inode) { -- ext2fs_free_mem(&fs->inode_map); -+ ext2fs_free_inode_bitmap(fs->inode_map); - fs->inode_map = 0; - } - if (inode_bitmap) --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-libext2fs-verify-the-block-numbers-for-the-allocatio.patch b/SOURCES/e2fsprogs-1.45.5-libext2fs-verify-the-block-numbers-for-the-allocatio.patch deleted file mode 100644 index 1a36d32..0000000 --- a/SOURCES/e2fsprogs-1.45.5-libext2fs-verify-the-block-numbers-for-the-allocatio.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 21e41eeef968941c1ee0126852fdb705967730ea Mon Sep 17 00:00:00 2001 -From: Theodore Ts'o -Date: Fri, 8 Nov 2019 11:58:10 -0500 -Subject: [PATCH 05/10] libext2fs: verify the block numbers for the allocation - bitmaps are valid - -This avoids a potential UBsan failure when we multiply an insanely -high block number with the block size and we get a multiplication -overflow. - -Google-Bug-Id: 128130353 -Signed-off-by: Theodore Ts'o ---- - lib/ext2fs/rw_bitmaps.c | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c -index e092cab0..d80c9eb8 100644 ---- a/lib/ext2fs/rw_bitmaps.c -+++ b/lib/ext2fs/rw_bitmaps.c -@@ -306,9 +306,10 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) - for (i = 0; i < fs->group_desc_count; i++) { - if (block_bitmap) { - blk = ext2fs_block_bitmap_loc(fs, i); -- if (csum_flag && -- ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) && -- ext2fs_group_desc_csum_verify(fs, i)) -+ if ((csum_flag && -+ ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) && -+ ext2fs_group_desc_csum_verify(fs, i)) || -+ (blk >= ext2fs_blocks_count(fs->super))) - blk = 0; - if (blk) { - retval = io_channel_read_blk64(fs->io, blk, -@@ -340,9 +341,10 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) - } - if (inode_bitmap) { - blk = ext2fs_inode_bitmap_loc(fs, i); -- if (csum_flag && -- ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT) && -- ext2fs_group_desc_csum_verify(fs, i)) -+ if ((csum_flag && -+ ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT) && -+ ext2fs_group_desc_csum_verify(fs, i)) || -+ (blk >= ext2fs_blocks_count(fs->super))) - blk = 0; - if (blk) { - retval = io_channel_read_blk64(fs->io, blk, --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.5-tune2fs-prohibit-toggling-uninit_bg-on-live-filesyst.patch b/SOURCES/e2fsprogs-1.45.5-tune2fs-prohibit-toggling-uninit_bg-on-live-filesyst.patch deleted file mode 100644 index 4e2d4e7..0000000 --- a/SOURCES/e2fsprogs-1.45.5-tune2fs-prohibit-toggling-uninit_bg-on-live-filesyst.patch +++ /dev/null @@ -1,56 +0,0 @@ -From d758a667f27b38d9ecc0715062307a8bce741aee Mon Sep 17 00:00:00 2001 -From: "Darrick J. Wong" -Date: Wed, 20 Nov 2019 11:32:55 -0800 -Subject: [PATCH 06/10] tune2fs: prohibit toggling uninit_bg on live - filesystems - -An internal customer followed an erroneous AskUbuntu article[1] to try to -change the UUID of a live ext4 filesystem. The article claims that you -can work around tune2fs' "cannot change UUID on live fs" error by -disabling uninit_bg, changing the UUID, and re-enabling the feature. - -This led to metadata corruption because tune2fs' journal descriptor -rewrite races with regular filesystem writes. Therefore, prevent -administrators from turning on or off uninit_bg on a mounted fs. - -[1] https://askubuntu.com/questions/132079/how-do-i-change-uuid-of-a-disk-to-whatever-i-want/195839#459097 - -Signed-off-by: Darrick J. Wong -Signed-off-by: Theodore Ts'o ---- - misc/tune2fs.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/misc/tune2fs.c b/misc/tune2fs.c -index 7d2d38d7..301cf388 100644 ---- a/misc/tune2fs.c -+++ b/misc/tune2fs.c -@@ -1308,6 +1308,12 @@ mmp_error: - - if (FEATURE_ON(E2P_FEATURE_RO_INCOMPAT, - EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { -+ if (mount_flags & EXT2_MF_MOUNTED) { -+ fputs(_("Cannot enable uninit_bg on a mounted " -+ "filesystem!\n"), stderr); -+ exit(1); -+ } -+ - /* Do not enable uninit_bg when metadata_csum enabled */ - if (ext2fs_has_feature_metadata_csum(fs->super)) - ext2fs_clear_feature_gdt_csum(fs->super); -@@ -1317,6 +1323,12 @@ mmp_error: - - if (FEATURE_OFF(E2P_FEATURE_RO_INCOMPAT, - EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) { -+ if (mount_flags & EXT2_MF_MOUNTED) { -+ fputs(_("Cannot disable uninit_bg on a mounted " -+ "filesystem!\n"), stderr); -+ exit(1); -+ } -+ - err = disable_uninit_bg(fs, - EXT4_FEATURE_RO_COMPAT_GDT_CSUM); - if (err) --- -2.21.1 - diff --git a/SOURCES/e2fsprogs-1.45.6-Makefile.in-Disable-e2scrub.patch b/SOURCES/e2fsprogs-1.45.6-Makefile.in-Disable-e2scrub.patch new file mode 100644 index 0000000..0d31242 --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-Makefile.in-Disable-e2scrub.patch @@ -0,0 +1,38 @@ +From 06116f6d053e398d13634df911bcb105d0fb2416 Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Sun, 15 Dec 2019 12:42:28 +0100 +Subject: [PATCH 1/7] Makefile.in: Disable e2scrub + +e2scrub system is still new and we're not ready to support it yet, so +just disbale it and not even build it. + +Signed-off-by: Lukas Czerner +--- + Makefile.in | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index b951c017..34e2048d 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -13,7 +13,6 @@ INSTALL = @INSTALL@ + @DEBUGFS_CMT@DEBUGFS_DIR= debugfs + @UUID_CMT@UUID_LIB_SUBDIR= lib/uuid + @BLKID_CMT@BLKID_LIB_SUBDIR= lib/blkid +-@E2SCRUB_CMT@E2SCRUB_DIR= scrub + @ALL_CMT@SUPPORT_LIB_SUBDIR= lib/support + @ALL_CMT@E2P_LIB_SUBDIR= lib/e2p + @ALL_CMT@EXT2FS_LIB_SUBDIR= lib/ext2fs +@@ -21,8 +20,7 @@ INSTALL = @INSTALL@ + LIB_SUBDIRS=lib/et lib/ss $(E2P_LIB_SUBDIR) $(UUID_LIB_SUBDIR) \ + $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR) intl + +-PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po \ +- $(E2SCRUB_DIR) ++PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po + + SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests + +-- +2.21.3 + diff --git a/SOURCES/e2fsprogs-1.45.6-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch b/SOURCES/e2fsprogs-1.45.6-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch new file mode 100644 index 0000000..8da372e --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch @@ -0,0 +1,45 @@ +From f2bb71bdbedf33f4fae4e1402ec23fe58eece1a7 Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Sun, 15 Dec 2019 14:39:46 +0100 +Subject: [PATCH 2/7] Revert "fuse2fs: install fuse2fs in /usr/bin instead of + /usr/sbin" + +This reverts commit b71150355dca5409cf8e82a7e715e459a795bbf8. +--- + debian/fuse2fs.install | 2 +- + misc/Makefile.in | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/debian/fuse2fs.install b/debian/fuse2fs.install +index 2ed4c3c0..cd37a70e 100644 +--- a/debian/fuse2fs.install ++++ b/debian/fuse2fs.install +@@ -1,2 +1,2 @@ +-/usr/bin/fuse2fs ++/usr/sbin/fuse2fs + /usr/share/man/man1/fuse2fs.1 +diff --git a/misc/Makefile.in b/misc/Makefile.in +index 9f2a8939..216fc771 100644 +--- a/misc/Makefile.in ++++ b/misc/Makefile.in +@@ -35,7 +35,7 @@ INSTALL = @INSTALL@ + SPROGS= mke2fs badblocks tune2fs dumpe2fs $(BLKID_PROG) logsave \ + $(E2IMAGE_PROG) @FSCK_PROG@ e2undo + USPROGS= mklost+found filefrag e2freefrag $(UUIDD_PROG) \ +- $(E4DEFRAG_PROG) $(E4CRYPT_PROG) ++ $(E4DEFRAG_PROG) $(E4CRYPT_PROG) $(FUSE_PROG) + SMANPAGES= tune2fs.8 mklost+found.8 mke2fs.8 dumpe2fs.8 badblocks.8 \ + e2label.8 $(FINDFS_MAN) $(BLKID_MAN) $(E2IMAGE_MAN) \ + logsave.8 filefrag.8 e2freefrag.8 e2undo.8 \ +@@ -43,7 +43,7 @@ SMANPAGES= tune2fs.8 mklost+found.8 mke2fs.8 dumpe2fs.8 badblocks.8 \ + e2mmpstatus.8 + FMANPAGES= mke2fs.conf.5 ext4.5 + +-UPROGS= chattr lsattr $(FUSE_PROG) @UUID_CMT@ uuidgen ++UPROGS= chattr lsattr @UUID_CMT@ uuidgen + UMANPAGES= chattr.1 lsattr.1 @UUID_CMT@ uuidgen.1 + UMANPAGES+= @FUSE_CMT@ fuse2fs.1 + +-- +2.21.3 + diff --git a/SOURCES/e2fsprogs-1.45.6-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch b/SOURCES/e2fsprogs-1.45.6-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch new file mode 100644 index 0000000..17c210d --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch @@ -0,0 +1,86 @@ +From cdbe6f07c929b0c9a80b7fbeb61b3a9f66015085 Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Tue, 14 Jan 2020 09:49:31 +0100 +Subject: [PATCH 6/7] Revert "libext2fs: hide struct ext2fs_hashmap as an + internal implementation detail" + +This reverts commit ef54444e6d1da4b464c11e749c9643ed945a770b +because it breaks ABI. + +Signed-off-by: Lukas Czerner +--- + lib/ext2fs/hashmap.c | 16 ---------------- + lib/ext2fs/hashmap.h | 30 +++++++++++++++++++++--------- + 2 files changed, 21 insertions(+), 25 deletions(-) + +diff --git a/lib/ext2fs/hashmap.c b/lib/ext2fs/hashmap.c +index ffe61ce9..3d8ee814 100644 +--- a/lib/ext2fs/hashmap.c ++++ b/lib/ext2fs/hashmap.c +@@ -1,22 +1,6 @@ + #include "hashmap.h" + #include + +-struct ext2fs_hashmap { +- uint32_t size; +- uint32_t(*hash)(const void *key, size_t len); +- void(*free)(void*); +- struct ext2fs_hashmap_entry *first; +- struct ext2fs_hashmap_entry *last; +-#if __GNUC_PREREQ (4, 8) +-#pragma GCC diagnostic push +-#pragma GCC diagnostic ignored "-Wpedantic" +-#endif +- struct ext2fs_hashmap_entry *entries[0]; +-#if __GNUC_PREREQ (4, 8) +-#pragma GCC diagnostic pop +-#endif +-}; +- + uint32_t ext2fs_djb2_hash(const void *str, size_t size) + { + int c; +diff --git a/lib/ext2fs/hashmap.h b/lib/ext2fs/hashmap.h +index dcfa7455..656d3d90 100644 +--- a/lib/ext2fs/hashmap.h ++++ b/lib/ext2fs/hashmap.h +@@ -13,15 +13,27 @@ + #endif + #endif + +-struct ext2fs_hashmap; +- +-struct ext2fs_hashmap_entry { +- void *data; +- const void *key; +- size_t key_len; +- struct ext2fs_hashmap_entry *next; +- struct ext2fs_hashmap_entry *list_next; +- struct ext2fs_hashmap_entry *list_prev; ++struct ext2fs_hashmap { ++ uint32_t size; ++ uint32_t(*hash)(const void *key, size_t len); ++ void(*free)(void*); ++ struct ext2fs_hashmap_entry *first; ++ struct ext2fs_hashmap_entry *last; ++ struct ext2fs_hashmap_entry { ++ void *data; ++ const void *key; ++ size_t key_len; ++ struct ext2fs_hashmap_entry *next; ++ struct ext2fs_hashmap_entry *list_next; ++ struct ext2fs_hashmap_entry *list_prev; ++#if __GNUC_PREREQ (4, 8) ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wpedantic" ++#endif ++ } *entries[0]; ++#if __GNUC_PREREQ (4, 8) ++#pragma GCC diagnostic pop ++#endif + }; + + struct ext2fs_hashmap *ext2fs_hashmap_create( +-- +2.21.3 + diff --git a/SOURCES/e2fsprogs-1.45.6-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch b/SOURCES/e2fsprogs-1.45.6-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch new file mode 100644 index 0000000..b473248 --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch @@ -0,0 +1,1421 @@ +From 1c25e64066e861f273b785b06ef3bc7636552eab Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Tue, 14 Jan 2020 09:49:19 +0100 +Subject: [PATCH 5/7] Revert "libext2fs: revamp bitmap types to fix LTO + warnings" + +This reverts commit 83d9ffccf3ee6ad4e165eeb6912acf1f6149be28 because it +breaks ABI. + +Signed-off-by: Lukas Czerner +--- + lib/ext2fs/bitmaps.c | 6 +- + lib/ext2fs/blkmap64_ba.c | 38 ++++---- + lib/ext2fs/blkmap64_rb.c | 38 ++++---- + lib/ext2fs/bmap64.h | 38 ++++---- + lib/ext2fs/ext2fs.h | 11 +-- + lib/ext2fs/gen_bitmap.c | 113 ++++++++--------------- + lib/ext2fs/gen_bitmap64.c | 185 ++++++++++++++++---------------------- + 7 files changed, 173 insertions(+), 256 deletions(-) + +diff --git a/lib/ext2fs/bitmaps.c b/lib/ext2fs/bitmaps.c +index 834a3962..e0b1f7cd 100644 +--- a/lib/ext2fs/bitmaps.c ++++ b/lib/ext2fs/bitmaps.c +@@ -126,7 +126,6 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs, + { + __u64 start, end, real_end; + ext2fs_generic_bitmap bmap; +- ext2fs_generic_bitmap_64 bmap64; + errcode_t retval; + + EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); +@@ -149,15 +148,14 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs, + end, real_end, descr, &bmap); + if (retval) + return retval; +- bmap64 = (ext2fs_generic_bitmap_64) bmap; +- bmap64->cluster_bits = 0; ++ bmap->cluster_bits = 0; + *ret = bmap; + return 0; + } + + int ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) bitmap; ++ ext2fs_generic_bitmap bmap = bitmap; + + if (!EXT2FS_IS_64_BITMAP(bmap)) + return 0; +diff --git a/lib/ext2fs/blkmap64_ba.c b/lib/ext2fs/blkmap64_ba.c +index 85cb38d2..3707a61e 100644 +--- a/lib/ext2fs/blkmap64_ba.c ++++ b/lib/ext2fs/blkmap64_ba.c +@@ -40,7 +40,7 @@ struct ext2fs_ba_private_struct { + + typedef struct ext2fs_ba_private_struct *ext2fs_ba_private; + +-static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) ++static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap bitmap) + { + ext2fs_ba_private bp; + errcode_t retval; +@@ -69,7 +69,7 @@ static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) + } + + static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)), +- ext2fs_generic_bitmap_64 bitmap) ++ ext2fs_generic_bitmap bitmap) + { + ext2fs_ba_private bp; + errcode_t retval; +@@ -86,7 +86,7 @@ static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)), + return 0; + } + +-static void ba_free_bmap(ext2fs_generic_bitmap_64 bitmap) ++static void ba_free_bmap(ext2fs_generic_bitmap bitmap) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; + +@@ -101,8 +101,8 @@ static void ba_free_bmap(ext2fs_generic_bitmap_64 bitmap) + bp = 0; + } + +-static errcode_t ba_copy_bmap(ext2fs_generic_bitmap_64 src, +- ext2fs_generic_bitmap_64 dest) ++static errcode_t ba_copy_bmap(ext2fs_generic_bitmap src, ++ ext2fs_generic_bitmap dest) + { + ext2fs_ba_private src_bp = (ext2fs_ba_private) src->private; + ext2fs_ba_private dest_bp; +@@ -121,7 +121,7 @@ static errcode_t ba_copy_bmap(ext2fs_generic_bitmap_64 src, + return 0; + } + +-static errcode_t ba_resize_bmap(ext2fs_generic_bitmap_64 bmap, ++static errcode_t ba_resize_bmap(ext2fs_generic_bitmap bmap, + __u64 new_end, __u64 new_real_end) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bmap->private; +@@ -162,7 +162,7 @@ static errcode_t ba_resize_bmap(ext2fs_generic_bitmap_64 bmap, + + } + +-static int ba_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) ++static int ba_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; + blk64_t bitno = (blk64_t) arg; +@@ -170,7 +170,7 @@ static int ba_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) + return ext2fs_set_bit64(bitno - bitmap->start, bp->bitarray); + } + +-static int ba_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) ++static int ba_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; + blk64_t bitno = (blk64_t) arg; +@@ -178,7 +178,7 @@ static int ba_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) + return ext2fs_clear_bit64(bitno - bitmap->start, bp->bitarray); + } + +-static int ba_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) ++static int ba_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; + blk64_t bitno = (blk64_t) arg; +@@ -186,7 +186,7 @@ static int ba_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) + return ext2fs_test_bit64(bitno - bitmap->start, bp->bitarray); + } + +-static void ba_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, ++static void ba_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, + unsigned int num) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; +@@ -197,7 +197,7 @@ static void ba_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, + ext2fs_fast_set_bit64(bitno + i - bitmap->start, bp->bitarray); + } + +-static void ba_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, ++static void ba_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, + unsigned int num) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; +@@ -208,7 +208,7 @@ static void ba_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, + ext2fs_fast_clear_bit64(bitno + i - bitmap->start, bp->bitarray); + } + +-static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, ++static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap, + __u64 start, unsigned int len) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; +@@ -282,7 +282,7 @@ static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, + } + + +-static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap bitmap, + __u64 start, size_t num, void *in) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; +@@ -292,7 +292,7 @@ static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, + return 0; + } + +-static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap bitmap, + __u64 start, size_t num, void *out) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; +@@ -302,7 +302,7 @@ static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, + return 0; + } + +-static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap) ++static void ba_clear_bmap(ext2fs_generic_bitmap bitmap) + { + ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private; + +@@ -311,20 +311,20 @@ static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap) + } + + #ifdef ENABLE_BMAP_STATS +-static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap) ++static void ba_print_stats(ext2fs_generic_bitmap bitmap) + { + fprintf(stderr, "%16llu Bytes used by bitarray\n", + ((bitmap->real_end - bitmap->start) >> 3) + 1 + + sizeof(struct ext2fs_ba_private_struct)); + } + #else +-static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused))) ++static void ba_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused))) + { + } + #endif + + /* Find the first zero bit between start and end, inclusive. */ +-static errcode_t ba_find_first_zero(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t ba_find_first_zero(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out) + { + ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private; +@@ -398,7 +398,7 @@ static errcode_t ba_find_first_zero(ext2fs_generic_bitmap_64 bitmap, + } + + /* Find the first one bit between start and end, inclusive. */ +-static errcode_t ba_find_first_set(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t ba_find_first_set(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out) + { + ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private; +diff --git a/lib/ext2fs/blkmap64_rb.c b/lib/ext2fs/blkmap64_rb.c +index 1fd55274..4cbfb1ed 100644 +--- a/lib/ext2fs/blkmap64_rb.c ++++ b/lib/ext2fs/blkmap64_rb.c +@@ -177,7 +177,7 @@ static void rb_free_extent(struct ext2fs_rb_private *bp, + ext2fs_free_mem(&ext); + } + +-static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) ++static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap bitmap) + { + struct ext2fs_rb_private *bp; + errcode_t retval; +@@ -201,7 +201,7 @@ static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap_64 bitmap) + } + + static errcode_t rb_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)), +- ext2fs_generic_bitmap_64 bitmap) ++ ext2fs_generic_bitmap bitmap) + { + errcode_t retval; + +@@ -225,7 +225,7 @@ static void rb_free_tree(struct rb_root *root) + } + } + +-static void rb_free_bmap(ext2fs_generic_bitmap_64 bitmap) ++static void rb_free_bmap(ext2fs_generic_bitmap bitmap) + { + struct ext2fs_rb_private *bp; + +@@ -236,8 +236,8 @@ static void rb_free_bmap(ext2fs_generic_bitmap_64 bitmap) + bp = 0; + } + +-static errcode_t rb_copy_bmap(ext2fs_generic_bitmap_64 src, +- ext2fs_generic_bitmap_64 dest) ++static errcode_t rb_copy_bmap(ext2fs_generic_bitmap src, ++ ext2fs_generic_bitmap dest) + { + struct ext2fs_rb_private *src_bp, *dest_bp; + struct bmap_rb_extent *src_ext, *dest_ext; +@@ -302,7 +302,7 @@ static void rb_truncate(__u64 new_max, struct rb_root *root) + } + } + +-static errcode_t rb_resize_bmap(ext2fs_generic_bitmap_64 bmap, ++static errcode_t rb_resize_bmap(ext2fs_generic_bitmap bmap, + __u64 new_end, __u64 new_real_end) + { + struct ext2fs_rb_private *bp; +@@ -575,7 +575,7 @@ static int rb_remove_extent(__u64 start, __u64 count, + return retval; + } + +-static int rb_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) ++static int rb_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) + { + struct ext2fs_rb_private *bp; + int retval; +@@ -588,7 +588,7 @@ static int rb_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) + return retval; + } + +-static int rb_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) ++static int rb_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) + { + struct ext2fs_rb_private *bp; + int retval; +@@ -603,7 +603,7 @@ static int rb_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) + } + + inline +-static int rb_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) ++static int rb_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg) + { + struct ext2fs_rb_private *bp; + +@@ -613,7 +613,7 @@ static int rb_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg) + return rb_test_bit(bp, arg); + } + +-static void rb_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, ++static void rb_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, + unsigned int num) + { + struct ext2fs_rb_private *bp; +@@ -625,7 +625,7 @@ static void rb_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, + check_tree(&bp->root, __func__); + } + +-static void rb_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, ++static void rb_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg, + unsigned int num) + { + struct ext2fs_rb_private *bp; +@@ -637,7 +637,7 @@ static void rb_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg, + check_tree(&bp->root, __func__); + } + +-static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, ++static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap, + __u64 start, unsigned int len) + { + struct rb_node *parent = NULL, **n; +@@ -693,7 +693,7 @@ static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap, + return retval; + } + +-static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap bitmap, + __u64 start, size_t num, void *in) + { + struct ext2fs_rb_private *bp; +@@ -739,7 +739,7 @@ static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, + return 0; + } + +-static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap bitmap, + __u64 start, size_t num, void *out) + { + +@@ -804,7 +804,7 @@ static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, + return 0; + } + +-static void rb_clear_bmap(ext2fs_generic_bitmap_64 bitmap) ++static void rb_clear_bmap(ext2fs_generic_bitmap bitmap) + { + struct ext2fs_rb_private *bp; + +@@ -817,7 +817,7 @@ static void rb_clear_bmap(ext2fs_generic_bitmap_64 bitmap) + check_tree(&bp->root, __func__); + } + +-static errcode_t rb_find_first_zero(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t rb_find_first_zero(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out) + { + struct rb_node *parent = NULL, **n; +@@ -853,7 +853,7 @@ static errcode_t rb_find_first_zero(ext2fs_generic_bitmap_64 bitmap, + return 0; + } + +-static errcode_t rb_find_first_set(ext2fs_generic_bitmap_64 bitmap, ++static errcode_t rb_find_first_set(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out) + { + struct rb_node *parent = NULL, **n; +@@ -902,7 +902,7 @@ static errcode_t rb_find_first_set(ext2fs_generic_bitmap_64 bitmap, + } + + #ifdef ENABLE_BMAP_STATS +-static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap) ++static void rb_print_stats(ext2fs_generic_bitmap bitmap) + { + struct ext2fs_rb_private *bp; + struct rb_node *node = NULL; +@@ -963,7 +963,7 @@ static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap) + eff); + } + #else +-static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused))) ++static void rb_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused))) + { + } + #endif +diff --git a/lib/ext2fs/bmap64.h b/lib/ext2fs/bmap64.h +index de334548..d8c7a3c3 100644 +--- a/lib/ext2fs/bmap64.h ++++ b/lib/ext2fs/bmap64.h +@@ -37,7 +37,7 @@ struct ext2_bmap_statistics { + }; + + +-struct ext2fs_struct_generic_bitmap_64 { ++struct ext2fs_struct_generic_bitmap { + errcode_t magic; + ext2_filsys fs; + struct ext2_bitmap_ops *bitmap_ops; +@@ -53,8 +53,6 @@ struct ext2fs_struct_generic_bitmap_64 { + #endif + }; + +-typedef struct ext2fs_struct_generic_bitmap_64 *ext2fs_generic_bitmap_64; +- + #define EXT2FS_IS_32_BITMAP(bmap) \ + (((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \ + ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \ +@@ -68,37 +66,37 @@ typedef struct ext2fs_struct_generic_bitmap_64 *ext2fs_generic_bitmap_64; + struct ext2_bitmap_ops { + int type; + /* Generic bmap operators */ +- errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap_64 bmap); +- void (*free_bmap)(ext2fs_generic_bitmap_64 bitmap); +- errcode_t (*copy_bmap)(ext2fs_generic_bitmap_64 src, +- ext2fs_generic_bitmap_64 dest); +- errcode_t (*resize_bmap)(ext2fs_generic_bitmap_64 bitmap, ++ errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap bmap); ++ void (*free_bmap)(ext2fs_generic_bitmap bitmap); ++ errcode_t (*copy_bmap)(ext2fs_generic_bitmap src, ++ ext2fs_generic_bitmap dest); ++ errcode_t (*resize_bmap)(ext2fs_generic_bitmap bitmap, + __u64 new_end, + __u64 new_real_end); + /* bit set/test operators */ +- int (*mark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg); +- int (*unmark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg); +- int (*test_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg); +- void (*mark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg, ++ int (*mark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg); ++ int (*unmark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg); ++ int (*test_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg); ++ void (*mark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg, + unsigned int num); +- void (*unmark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg, ++ void (*unmark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg, + unsigned int num); +- int (*test_clear_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, ++ int (*test_clear_bmap_extent)(ext2fs_generic_bitmap bitmap, + __u64 arg, unsigned int num); +- errcode_t (*set_bmap_range)(ext2fs_generic_bitmap_64 bitmap, ++ errcode_t (*set_bmap_range)(ext2fs_generic_bitmap bitmap, + __u64 start, size_t num, void *in); +- errcode_t (*get_bmap_range)(ext2fs_generic_bitmap_64 bitmap, ++ errcode_t (*get_bmap_range)(ext2fs_generic_bitmap bitmap, + __u64 start, size_t num, void *out); +- void (*clear_bmap)(ext2fs_generic_bitmap_64 bitmap); +- void (*print_stats)(ext2fs_generic_bitmap_64); ++ void (*clear_bmap)(ext2fs_generic_bitmap bitmap); ++ void (*print_stats)(ext2fs_generic_bitmap); + + /* Find the first zero bit between start and end, inclusive. + * May be NULL, in which case a generic function is used. */ +- errcode_t (*find_first_zero)(ext2fs_generic_bitmap_64 bitmap, ++ errcode_t (*find_first_zero)(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out); + /* Find the first set bit between start and end, inclusive. + * May be NULL, in which case a generic function is used. */ +- errcode_t (*find_first_set)(ext2fs_generic_bitmap_64 bitmap, ++ errcode_t (*find_first_set)(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out); + }; + +diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h +index 4b7c836a..ba83534c 100644 +--- a/lib/ext2fs/ext2fs.h ++++ b/lib/ext2fs/ext2fs.h +@@ -111,14 +111,9 @@ typedef struct struct_ext2_filsys *ext2_filsys; + #define EXT2FS_UNMARK_ERROR 1 + #define EXT2FS_TEST_ERROR 2 + +-struct ext2fs_struct_generic_bitmap_base { +- errcode_t magic; +- ext2_filsys fs; +-}; +- +-typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_generic_bitmap; +-typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_inode_bitmap; +-typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_block_bitmap; ++typedef struct ext2fs_struct_generic_bitmap *ext2fs_generic_bitmap; ++typedef struct ext2fs_struct_generic_bitmap *ext2fs_inode_bitmap; ++typedef struct ext2fs_struct_generic_bitmap *ext2fs_block_bitmap; + + #define EXT2_FIRST_INODE(s) EXT2_FIRST_INO(s) + +diff --git a/lib/ext2fs/gen_bitmap.c b/lib/ext2fs/gen_bitmap.c +index 1536d4b3..b545ed7f 100644 +--- a/lib/ext2fs/gen_bitmap.c ++++ b/lib/ext2fs/gen_bitmap.c +@@ -28,7 +28,7 @@ + #include "ext2_fs.h" + #include "ext2fsP.h" + +-struct ext2fs_struct_generic_bitmap_32 { ++struct ext2fs_struct_generic_bitmap { + errcode_t magic; + ext2_filsys fs; + __u32 start, end; +@@ -39,8 +39,6 @@ struct ext2fs_struct_generic_bitmap_32 { + __u32 reserved[7]; + }; + +-typedef struct ext2fs_struct_generic_bitmap_32 *ext2fs_generic_bitmap_32; +- + #define EXT2FS_IS_32_BITMAP(bmap) \ + (((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \ + ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \ +@@ -55,11 +53,9 @@ typedef struct ext2fs_struct_generic_bitmap_32 *ext2fs_generic_bitmap_32; + * Used by previously inlined function, so we have to export this and + * not change the function signature + */ +-void ext2fs_warn_bitmap2(ext2fs_generic_bitmap gen_bitmap, ++void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap, + int code, unsigned long arg) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; +- + #ifndef OMIT_COM_ERR + if (bitmap->description) + com_err(0, bitmap->base_error_code+code, +@@ -83,11 +79,11 @@ errcode_t ext2fs_make_generic_bitmap(errcode_t magic, ext2_filsys fs, + const char *descr, char *init_map, + ext2fs_generic_bitmap *ret) + { +- ext2fs_generic_bitmap_32 bitmap; ++ ext2fs_generic_bitmap bitmap; + errcode_t retval; + size_t size; + +- retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap_32), ++ retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap), + &bitmap); + if (retval) + return retval; +@@ -131,7 +127,7 @@ errcode_t ext2fs_make_generic_bitmap(errcode_t magic, ext2_filsys fs, + memcpy(bitmap->bitmap, init_map, size); + else + memset(bitmap->bitmap, 0, size); +- *ret = (ext2fs_generic_bitmap) bitmap; ++ *ret = bitmap; + return 0; + } + +@@ -145,11 +141,9 @@ errcode_t ext2fs_allocate_generic_bitmap(__u32 start, + start, end, real_end, descr, 0, ret); + } + +-errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap gen_src, ++errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap src, + ext2fs_generic_bitmap *dest) + { +- ext2fs_generic_bitmap_32 src = (ext2fs_generic_bitmap_32) gen_src; +- + return (ext2fs_make_generic_bitmap(src->magic, src->fs, + src->start, src->end, + src->real_end, +@@ -157,11 +151,9 @@ errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap gen_src, + dest)); + } + +-void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap gen_bitmap) ++void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap bitmap) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; +- +- if (check_magic(gen_bitmap)) ++ if (check_magic(bitmap)) + return; + + bitmap->magic = 0; +@@ -179,8 +171,6 @@ void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap gen_bitmap) + int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap, + blk_t bitno) + { +- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; +- + if (!EXT2FS_IS_32_BITMAP(bitmap)) { + if (EXT2FS_IS_64_BITMAP(bitmap)) { + ext2fs_warn_bitmap32(bitmap, __func__); +@@ -193,18 +183,16 @@ int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap, + return 0; + } + +- if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) { ++ if ((bitno < bitmap->start) || (bitno > bitmap->end)) { + ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, bitno); + return 0; + } +- return ext2fs_test_bit(bitno - bitmap32->start, bitmap32->bitmap); ++ return ext2fs_test_bit(bitno - bitmap->start, bitmap->bitmap); + } + + int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap, + __u32 bitno) + { +- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; +- + if (!EXT2FS_IS_32_BITMAP(bitmap)) { + if (EXT2FS_IS_64_BITMAP(bitmap)) { + ext2fs_warn_bitmap32(bitmap, __func__); +@@ -217,18 +205,16 @@ int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap, + return 0; + } + +- if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) { ++ if ((bitno < bitmap->start) || (bitno > bitmap->end)) { + ext2fs_warn_bitmap2(bitmap, EXT2FS_MARK_ERROR, bitno); + return 0; + } +- return ext2fs_set_bit(bitno - bitmap32->start, bitmap32->bitmap); ++ return ext2fs_set_bit(bitno - bitmap->start, bitmap->bitmap); + } + + int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap, + blk_t bitno) + { +- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; +- + if (!EXT2FS_IS_32_BITMAP(bitmap)) { + if (EXT2FS_IS_64_BITMAP(bitmap)) { + ext2fs_warn_bitmap32(bitmap, __func__); +@@ -241,17 +227,15 @@ int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap, + return 0; + } + +- if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) { ++ if ((bitno < bitmap->start) || (bitno > bitmap->end)) { + ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR, bitno); + return 0; + } +- return ext2fs_clear_bit(bitno - bitmap32->start, bitmap32->bitmap); ++ return ext2fs_clear_bit(bitno - bitmap->start, bitmap->bitmap); + } + + __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap) + { +- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; +- + if (!EXT2FS_IS_32_BITMAP(bitmap)) { + if (EXT2FS_IS_64_BITMAP(bitmap)) { + ext2fs_warn_bitmap32(bitmap, __func__); +@@ -264,13 +248,11 @@ __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap) + return 0; + } + +- return bitmap32->start; ++ return bitmap->start; + } + + __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap) + { +- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; +- + if (!EXT2FS_IS_32_BITMAP(bitmap)) { + if (EXT2FS_IS_64_BITMAP(bitmap)) { + ext2fs_warn_bitmap32(bitmap, __func__); +@@ -282,13 +264,11 @@ __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap) + #endif + return 0; + } +- return bitmap32->end; ++ return bitmap->end; + } + + void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap) + { +- ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap; +- + if (!EXT2FS_IS_32_BITMAP(bitmap)) { + if (EXT2FS_IS_64_BITMAP(bitmap)) { + ext2fs_warn_bitmap32(bitmap, __func__); +@@ -302,16 +282,14 @@ void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap) + return; + } + +- memset(bitmap32->bitmap, 0, +- (size_t) (((bitmap32->real_end - bitmap32->start) / 8) + 1)); ++ memset(bitmap->bitmap, 0, ++ (size_t) (((bitmap->real_end - bitmap->start) / 8) + 1)); + } + +-errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap gen_bitmap, ++errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap bitmap, + errcode_t magic, errcode_t neq, + ext2_ino_t end, ext2_ino_t *oend) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; +- + EXT2_CHECK_MAGIC(bitmap, magic); + + if (end > bitmap->real_end) +@@ -324,9 +302,8 @@ errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap gen_bitmap, + + errcode_t ext2fs_resize_generic_bitmap(errcode_t magic, + __u32 new_end, __u32 new_real_end, +- ext2fs_generic_bitmap gen_bmap) ++ ext2fs_generic_bitmap bmap) + { +- ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap; + errcode_t retval; + size_t size, new_size; + __u32 bitno; +@@ -367,11 +344,9 @@ errcode_t ext2fs_resize_generic_bitmap(errcode_t magic, + } + + errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq, +- ext2fs_generic_bitmap gen_bm1, +- ext2fs_generic_bitmap gen_bm2) ++ ext2fs_generic_bitmap bm1, ++ ext2fs_generic_bitmap bm2) + { +- ext2fs_generic_bitmap_32 bm1 = (ext2fs_generic_bitmap_32) gen_bm1; +- ext2fs_generic_bitmap_32 bm2 = (ext2fs_generic_bitmap_32) gen_bm2; + blk_t i; + + if (!bm1 || bm1->magic != magic) +@@ -386,16 +361,15 @@ errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq, + return neq; + + for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++) +- if (ext2fs_fast_test_block_bitmap(gen_bm1, i) != +- ext2fs_fast_test_block_bitmap(gen_bm2, i)) ++ if (ext2fs_fast_test_block_bitmap(bm1, i) != ++ ext2fs_fast_test_block_bitmap(bm2, i)) + return neq; + + return 0; + } + +-void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap gen_map) ++void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap map) + { +- ext2fs_generic_bitmap_32 map = (ext2fs_generic_bitmap_32) gen_map; + __u32 i, j; + + /* Protect loop from wrap-around if map->real_end is maxed */ +@@ -405,13 +379,11 @@ void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap gen_map) + ext2fs_set_bit(j, map->bitmap); + } + +-errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap, ++errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap bmap, + errcode_t magic, + __u32 start, __u32 num, + void *out) + { +- ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap; +- + if (!bmap || (bmap->magic != magic)) + return magic; + +@@ -422,13 +394,11 @@ errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap, + return 0; + } + +-errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap, ++errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap bmap, + errcode_t magic, + __u32 start, __u32 num, + void *in) + { +- ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap; +- + if (!bmap || (bmap->magic != magic)) + return magic; + +@@ -462,11 +432,10 @@ int ext2fs_mem_is_zero(const char *mem, size_t len) + /* + * Return true if all of the bits in a specified range are clear + */ +-static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap gen_bitmap, ++static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap bitmap, + unsigned int start, + unsigned int len) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + size_t start_byte, len_byte = len >> 3; + unsigned int start_bit, len_bit = len % 8; + int first_bit = 0; +@@ -535,15 +504,14 @@ static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap gen_bitm + return ext2fs_mem_is_zero(ADDR + start_byte, len_byte); + } + +-errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap gen_bitmap, ++errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap, + __u32 start, __u32 end, + __u32 *out) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + blk_t b; + + if (start < bitmap->start || end > bitmap->end || start > end) { +- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start); ++ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start); + return EINVAL; + } + +@@ -559,15 +527,14 @@ errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap gen_bitmap + return ENOENT; + } + +-errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap gen_bitmap, ++errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap bitmap, + __u32 start, __u32 end, + __u32 *out) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + blk_t b; + + if (start < bitmap->start || end > bitmap->end || start > end) { +- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start); ++ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start); + return EINVAL; + } + +@@ -583,11 +550,9 @@ errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap gen_bitmap, + return ENOENT; + } + +-int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, ++int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap, + blk_t block, int num) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; +- + EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_BLOCK_BITMAP); + if ((block < bitmap->start) || (block > bitmap->real_end) || + (block+num-1 > bitmap->real_end)) { +@@ -599,11 +564,9 @@ int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, + bitmap, block, num); + } + +-int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap, ++int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap, + ext2_ino_t inode, int num) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; +- + EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_INODE_BITMAP); + if ((inode < bitmap->start) || (inode > bitmap->real_end) || + (inode+num-1 > bitmap->real_end)) { +@@ -615,10 +578,9 @@ int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap, + bitmap, inode, num); + } + +-void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, ++void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap, + blk_t block, int num) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + int i; + + if ((block < bitmap->start) || (block > bitmap->end) || +@@ -631,10 +593,9 @@ void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, + ext2fs_fast_set_bit(block + i - bitmap->start, bitmap->bitmap); + } + +-void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap, +- blk_t block, int num) ++void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap, ++ blk_t block, int num) + { +- ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap; + int i; + + if ((block < bitmap->start) || (block > bitmap->end) || +diff --git a/lib/ext2fs/gen_bitmap64.c b/lib/ext2fs/gen_bitmap64.c +index 6e4d8b71..47ba2baf 100644 +--- a/lib/ext2fs/gen_bitmap64.c ++++ b/lib/ext2fs/gen_bitmap64.c +@@ -68,7 +68,7 @@ + * e2fsck can request an encoding which is optimized for that. + */ + +-static void warn_bitmap(ext2fs_generic_bitmap_64 bitmap, ++static void warn_bitmap(ext2fs_generic_bitmap bitmap, + int code, __u64 arg) + { + #ifndef OMIT_COM_ERR +@@ -93,7 +93,7 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, + const char *descr, + ext2fs_generic_bitmap *ret) + { +- ext2fs_generic_bitmap_64 bitmap; ++ ext2fs_generic_bitmap bitmap; + struct ext2_bitmap_ops *ops; + ext2_ino_t num_dirs; + errcode_t retval; +@@ -119,7 +119,7 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, + return EINVAL; + } + +- retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64), ++ retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap), + &bitmap); + if (retval) + return retval; +@@ -170,12 +170,12 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic, + return retval; + } + +- *ret = (ext2fs_generic_bitmap) bitmap; ++ *ret = bitmap; + return 0; + } + + #ifdef ENABLE_BMAP_STATS +-static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap_64 bitmap) ++static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap bitmap) + { + struct ext2_bmap_statistics *stats = &bitmap->stats; + #ifdef ENABLE_BMAP_STATS_OPS +@@ -241,15 +241,13 @@ static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap_64 bitmap) + } + #endif + +-void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap) ++void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; +- + if (!bmap) + return; + + if (EXT2FS_IS_32_BITMAP(bmap)) { +- ext2fs_free_generic_bitmap(gen_bmap); ++ ext2fs_free_generic_bitmap(bmap); + return; + } + +@@ -273,25 +271,24 @@ void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap) + ext2fs_free_mem(&bmap); + } + +-errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap gen_src, ++errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src, + ext2fs_generic_bitmap *dest) + { +- ext2fs_generic_bitmap_64 src = (ext2fs_generic_bitmap_64) gen_src; + char *descr, *new_descr; +- ext2fs_generic_bitmap_64 new_bmap; ++ ext2fs_generic_bitmap new_bmap; + errcode_t retval; + + if (!src) + return EINVAL; + + if (EXT2FS_IS_32_BITMAP(src)) +- return ext2fs_copy_generic_bitmap(gen_src, dest); ++ return ext2fs_copy_generic_bitmap(src, dest); + + if (!EXT2FS_IS_64_BITMAP(src)) + return EINVAL; + + /* Allocate a new bitmap struct */ +- retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64), ++ retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap), + &new_bmap); + if (retval) + return retval; +@@ -339,23 +336,21 @@ errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap gen_src, + return retval; + } + +- *dest = (ext2fs_generic_bitmap) new_bmap; ++ *dest = new_bmap; + + return 0; + } + +-errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap gen_bmap, ++errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap, + __u64 new_end, + __u64 new_real_end) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; +- + if (!bmap) + return EINVAL; + + if (EXT2FS_IS_32_BITMAP(bmap)) +- return ext2fs_resize_generic_bitmap(gen_bmap->magic, new_end, +- new_real_end, gen_bmap); ++ return ext2fs_resize_generic_bitmap(bmap->magic, new_end, ++ new_real_end, bmap); + + if (!EXT2FS_IS_64_BITMAP(bmap)) + return EINVAL; +@@ -365,12 +360,10 @@ errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap gen_bmap, + return bmap->bitmap_ops->resize_bmap(bmap, new_end, new_real_end); + } + +-errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap, ++errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap, + errcode_t neq, + __u64 end, __u64 *oend) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + if (!bitmap) + return EINVAL; + +@@ -378,8 +371,7 @@ errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap, + ext2_ino_t tmp_oend; + int retval; + +- retval = ext2fs_fudge_generic_bitmap_end(gen_bitmap, +- bitmap->magic, ++ retval = ext2fs_fudge_generic_bitmap_end(bitmap, bitmap->magic, + neq, end, &tmp_oend); + if (oend) + *oend = tmp_oend; +@@ -397,15 +389,13 @@ errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap, + return 0; + } + +-__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap gen_bitmap) ++__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + if (!bitmap) + return EINVAL; + + if (EXT2FS_IS_32_BITMAP(bitmap)) +- return ext2fs_get_generic_bitmap_start(gen_bitmap); ++ return ext2fs_get_generic_bitmap_start(bitmap); + + if (!EXT2FS_IS_64_BITMAP(bitmap)) + return EINVAL; +@@ -413,15 +403,13 @@ __u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap gen_bitmap) + return bitmap->start; + } + +-__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap) ++__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + if (!bitmap) + return EINVAL; + + if (EXT2FS_IS_32_BITMAP(bitmap)) +- return ext2fs_get_generic_bitmap_end(gen_bitmap); ++ return ext2fs_get_generic_bitmap_end(bitmap); + + if (!EXT2FS_IS_64_BITMAP(bitmap)) + return EINVAL; +@@ -429,31 +417,27 @@ __u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap) + return bitmap->end; + } + +-void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap gen_bitmap) ++void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap bitmap) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + if (EXT2FS_IS_32_BITMAP(bitmap)) +- ext2fs_clear_generic_bitmap(gen_bitmap); ++ ext2fs_clear_generic_bitmap(bitmap); + else +- bitmap->bitmap_ops->clear_bmap(bitmap); ++ bitmap->bitmap_ops->clear_bmap (bitmap); + } + +-int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, ++int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap, + __u64 arg) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + if (!bitmap) + return 0; + + if (EXT2FS_IS_32_BITMAP(bitmap)) { + if (arg & ~0xffffffffULL) { +- ext2fs_warn_bitmap2(gen_bitmap, ++ ext2fs_warn_bitmap2(bitmap, + EXT2FS_MARK_ERROR, 0xffffffff); + return 0; + } +- return ext2fs_mark_generic_bitmap(gen_bitmap, arg); ++ return ext2fs_mark_generic_bitmap(bitmap, arg); + } + + if (!EXT2FS_IS_64_BITMAP(bitmap)) +@@ -478,21 +462,19 @@ int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, + return bitmap->bitmap_ops->mark_bmap(bitmap, arg); + } + +-int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, ++int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap, + __u64 arg) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + if (!bitmap) + return 0; + + if (EXT2FS_IS_32_BITMAP(bitmap)) { + if (arg & ~0xffffffffULL) { +- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_UNMARK_ERROR, ++ ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR, + 0xffffffff); + return 0; + } +- return ext2fs_unmark_generic_bitmap(gen_bitmap, arg); ++ return ext2fs_unmark_generic_bitmap(bitmap, arg); + } + + if (!EXT2FS_IS_64_BITMAP(bitmap)) +@@ -510,20 +492,19 @@ int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap gen_bitmap, + return bitmap->bitmap_ops->unmark_bmap(bitmap, arg); + } + +-int ext2fs_test_generic_bmap(ext2fs_generic_bitmap gen_bitmap, ++int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap, + __u64 arg) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; + if (!bitmap) + return 0; + + if (EXT2FS_IS_32_BITMAP(bitmap)) { + if (arg & ~0xffffffffULL) { +- ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, ++ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, + 0xffffffff); + return 0; + } +- return ext2fs_test_generic_bitmap(gen_bitmap, arg); ++ return ext2fs_test_generic_bitmap(bitmap, arg); + } + + if (!EXT2FS_IS_64_BITMAP(bitmap)) +@@ -548,22 +529,20 @@ int ext2fs_test_generic_bmap(ext2fs_generic_bitmap gen_bitmap, + return bitmap->bitmap_ops->test_bmap(bitmap, arg); + } + +-errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, ++errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap, + __u64 start, unsigned int num, + void *in) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; +- + if (!bmap) + return EINVAL; + + if (EXT2FS_IS_32_BITMAP(bmap)) { + if ((start+num-1) & ~0xffffffffULL) { +- ext2fs_warn_bitmap2(gen_bmap, EXT2FS_UNMARK_ERROR, ++ ext2fs_warn_bitmap2(bmap, EXT2FS_UNMARK_ERROR, + 0xffffffff); + return EINVAL; + } +- return ext2fs_set_generic_bitmap_range(gen_bmap, bmap->magic, ++ return ext2fs_set_generic_bitmap_range(bmap, bmap->magic, + start, num, in); + } + +@@ -575,22 +554,20 @@ errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, + return bmap->bitmap_ops->set_bmap_range(bmap, start, num, in); + } + +-errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, ++errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bmap, + __u64 start, unsigned int num, + void *out) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; +- + if (!bmap) + return EINVAL; + + if (EXT2FS_IS_32_BITMAP(bmap)) { + if ((start+num-1) & ~0xffffffffULL) { +- ext2fs_warn_bitmap2(gen_bmap, ++ ext2fs_warn_bitmap2(bmap, + EXT2FS_UNMARK_ERROR, 0xffffffff); + return EINVAL; + } +- return ext2fs_get_generic_bitmap_range(gen_bmap, bmap->magic, ++ return ext2fs_get_generic_bitmap_range(bmap, bmap->magic, + start, num, out); + } + +@@ -603,11 +580,9 @@ errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap gen_bmap, + } + + errcode_t ext2fs_compare_generic_bmap(errcode_t neq, +- ext2fs_generic_bitmap gen_bm1, +- ext2fs_generic_bitmap gen_bm2) ++ ext2fs_generic_bitmap bm1, ++ ext2fs_generic_bitmap bm2) + { +- ext2fs_generic_bitmap_64 bm1 = (ext2fs_generic_bitmap_64) gen_bm1; +- ext2fs_generic_bitmap_64 bm2 = (ext2fs_generic_bitmap_64) gen_bm2; + blk64_t i; + + if (!bm1 || !bm2) +@@ -617,8 +592,7 @@ errcode_t ext2fs_compare_generic_bmap(errcode_t neq, + + /* Now we know both bitmaps have the same magic */ + if (EXT2FS_IS_32_BITMAP(bm1)) +- return ext2fs_compare_generic_bitmap(bm1->magic, neq, +- gen_bm1, gen_bm2); ++ return ext2fs_compare_generic_bitmap(bm1->magic, neq, bm1, bm2); + + if (!EXT2FS_IS_64_BITMAP(bm1)) + return EINVAL; +@@ -628,20 +602,19 @@ errcode_t ext2fs_compare_generic_bmap(errcode_t neq, + return neq; + + for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++) +- if (ext2fs_test_generic_bmap(gen_bm1, i) != +- ext2fs_test_generic_bmap(gen_bm2, i)) ++ if (ext2fs_test_generic_bmap(bm1, i) != ++ ext2fs_test_generic_bmap(bm2, i)) + return neq; + + return 0; + } + +-void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap gen_bmap) ++void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; + __u64 start, num; + + if (EXT2FS_IS_32_BITMAP(bmap)) { +- ext2fs_set_generic_bitmap_padding(gen_bmap); ++ ext2fs_set_generic_bitmap_padding(bmap); + return; + } + +@@ -651,10 +624,9 @@ void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap gen_bmap) + /* XXX ought to warn on error */ + } + +-int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, ++int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bmap, + blk64_t block, unsigned int num) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; + __u64 end = block + num; + + if (!bmap) +@@ -696,10 +668,9 @@ int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, + return bmap->bitmap_ops->test_clear_bmap_extent(bmap, block, num); + } + +-void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, ++void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bmap, + blk64_t block, unsigned int num) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; + __u64 end = block + num; + + if (!bmap) +@@ -737,10 +708,9 @@ void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, + bmap->bitmap_ops->mark_bmap_extent(bmap, block, num); + } + +-void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, ++void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bmap, + blk64_t block, unsigned int num) + { +- ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap; + __u64 end = block + num; + + if (!bmap) +@@ -778,10 +748,8 @@ void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, + bmap->bitmap_ops->unmark_bmap_extent(bmap, block, num); + } + +-void ext2fs_warn_bitmap32(ext2fs_generic_bitmap gen_bitmap, const char *func) ++void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func) + { +- ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap; +- + #ifndef OMIT_COM_ERR + if (bitmap && bitmap->description) + com_err(0, EXT2_ET_MAGIC_GENERIC_BITMAP, +@@ -796,22 +764,21 @@ void ext2fs_warn_bitmap32(ext2fs_generic_bitmap gen_bitmap, const char *func) + errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, + ext2fs_block_bitmap *bitmap) + { +- ext2fs_generic_bitmap_64 bmap, cmap; +- ext2fs_block_bitmap gen_bmap = *bitmap, gen_cmap; ++ ext2fs_block_bitmap cmap, bmap; + errcode_t retval; + blk64_t i, b_end, c_end; + int n, ratio; + +- bmap = (ext2fs_generic_bitmap_64) gen_bmap; +- if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(gen_bmap)) ++ bmap = *bitmap; ++ ++ if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(bmap)) + return 0; /* Nothing to do */ + + retval = ext2fs_allocate_block_bitmap(fs, "converted cluster bitmap", +- &gen_cmap); ++ &cmap); + if (retval) + return retval; + +- cmap = (ext2fs_generic_bitmap_64) gen_cmap; + i = bmap->start; + b_end = bmap->end; + bmap->end = bmap->real_end; +@@ -820,8 +787,8 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, + n = 0; + ratio = 1 << fs->cluster_ratio_bits; + while (i < bmap->real_end) { +- if (ext2fs_test_block_bitmap2(gen_bmap, i)) { +- ext2fs_mark_block_bitmap2(gen_cmap, i); ++ if (ext2fs_test_block_bitmap2(bmap, i)) { ++ ext2fs_mark_block_bitmap2(cmap, i); + i += ratio - n; + n = 0; + continue; +@@ -832,15 +799,14 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, + } + bmap->end = b_end; + cmap->end = c_end; +- ext2fs_free_block_bitmap(gen_bmap); +- *bitmap = (ext2fs_block_bitmap) cmap; ++ ext2fs_free_block_bitmap(bmap); ++ *bitmap = cmap; + return 0; + } + + errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out) + { +- ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap; + __u64 cstart, cend, cout; + errcode_t retval; + +@@ -866,27 +832,27 @@ errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap, + if (!EXT2FS_IS_64_BITMAP(bitmap)) + return EINVAL; + +- cstart = start >> bmap64->cluster_bits; +- cend = end >> bmap64->cluster_bits; ++ cstart = start >> bitmap->cluster_bits; ++ cend = end >> bitmap->cluster_bits; + +- if (cstart < bmap64->start || cend > bmap64->end || start > end) { +- warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start); ++ if (cstart < bitmap->start || cend > bitmap->end || start > end) { ++ warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start); + return EINVAL; + } + +- if (bmap64->bitmap_ops->find_first_zero) { +- retval = bmap64->bitmap_ops->find_first_zero(bmap64, cstart, ++ if (bitmap->bitmap_ops->find_first_zero) { ++ retval = bitmap->bitmap_ops->find_first_zero(bitmap, cstart, + cend, &cout); + if (retval) + return retval; + found: +- cout <<= bmap64->cluster_bits; ++ cout <<= bitmap->cluster_bits; + *out = (cout >= start) ? cout : start; + return 0; + } + + for (cout = cstart; cout <= cend; cout++) +- if (!bmap64->bitmap_ops->test_bmap(bmap64, cout)) ++ if (!bitmap->bitmap_ops->test_bmap(bitmap, cout)) + goto found; + + return ENOENT; +@@ -895,7 +861,6 @@ errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap, + errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap, + __u64 start, __u64 end, __u64 *out) + { +- ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap; + __u64 cstart, cend, cout; + errcode_t retval; + +@@ -921,27 +886,27 @@ errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap, + if (!EXT2FS_IS_64_BITMAP(bitmap)) + return EINVAL; + +- cstart = start >> bmap64->cluster_bits; +- cend = end >> bmap64->cluster_bits; ++ cstart = start >> bitmap->cluster_bits; ++ cend = end >> bitmap->cluster_bits; + +- if (cstart < bmap64->start || cend > bmap64->end || start > end) { +- warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start); ++ if (cstart < bitmap->start || cend > bitmap->end || start > end) { ++ warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start); + return EINVAL; + } + +- if (bmap64->bitmap_ops->find_first_set) { +- retval = bmap64->bitmap_ops->find_first_set(bmap64, cstart, ++ if (bitmap->bitmap_ops->find_first_set) { ++ retval = bitmap->bitmap_ops->find_first_set(bitmap, cstart, + cend, &cout); + if (retval) + return retval; + found: +- cout <<= bmap64->cluster_bits; ++ cout <<= bitmap->cluster_bits; + *out = (cout >= start) ? cout : start; + return 0; + } + + for (cout = cstart; cout <= cend; cout++) +- if (bmap64->bitmap_ops->test_bmap(bmap64, cout)) ++ if (bitmap->bitmap_ops->test_bmap(bitmap, cout)) + goto found; + + return ENOENT; +-- +2.21.3 + diff --git a/SOURCES/e2fsprogs-1.45.6-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch b/SOURCES/e2fsprogs-1.45.6-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch new file mode 100644 index 0000000..82363c5 --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch @@ -0,0 +1,51 @@ +From 9039cf5c5da439f6c65435c0a2b9ae16989940e1 Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Tue, 14 Jan 2020 20:56:41 +0100 +Subject: [PATCH 7/7] ext2fs: fix ABI change in the struct_ext2_filsys + structure + +Upstream increased size of the struct_ext2_filsys structure by adding +new encoding member. However this represents ABI breakage within a major +RHEL release. To avoid it use some of the reserved space in the +struct_ext2_filsys structure. + +Signed-off-by: Lukas Czerner +--- + lib/ext2fs/ext2fs.h | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h +index ba83534c..32c75171 100644 +--- a/lib/ext2fs/ext2fs.h ++++ b/lib/ext2fs/ext2fs.h +@@ -250,10 +250,17 @@ struct struct_ext2_filsys { + int cluster_ratio_bits; + __u16 default_bitmap_type; + __u16 pad; ++ ++ /* ++ * RedHat specific change to prevent ABI change by using 8 ++ * reserved bytes ++ */ ++ const struct ext2fs_nls_table *encoding; ++ + /* + * Reserved for future expansion + */ +- __u32 reserved[5]; ++ __u32 reserved[5 - (sizeof(long int)/4)]; + + /* + * Reserved for the use of the calling application. +@@ -304,8 +311,6 @@ struct struct_ext2_filsys { + + /* hashmap for SHA of data blocks */ + struct ext2fs_hashmap* block_sha_map; +- +- const struct ext2fs_nls_table *encoding; + }; + + #if EXT2_FLAT_INCLUDES +-- +2.21.3 + diff --git a/SOURCES/e2fsprogs-1.45.6-man-Add-note-about-RHEL8-supported-features-and-moun.patch b/SOURCES/e2fsprogs-1.45.6-man-Add-note-about-RHEL8-supported-features-and-moun.patch new file mode 100644 index 0000000..f08d1fa --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-man-Add-note-about-RHEL8-supported-features-and-moun.patch @@ -0,0 +1,133 @@ +From b46e1de31f31b9564445a094e1c9cb592062868c Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Wed, 18 Dec 2019 11:03:37 +0100 +Subject: [PATCH 4/7] man: Add note about RHEL8 supported features and mount + options + +Signed-off-by: Lukas Czerner +--- + misc/ext4.5.in | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + misc/mke2fs.8.in | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 96 insertions(+) + +diff --git a/misc/ext4.5.in b/misc/ext4.5.in +index 1db61a5f..39b1412e 100644 +--- a/misc/ext4.5.in ++++ b/misc/ext4.5.in +@@ -19,6 +19,54 @@ previously intended for use with the ext2 and ext3 file systems can be + mounted using the ext4 file system driver, and indeed in many modern + Linux distributions, the ext4 file system driver has been configured + to handle mount requests for ext2 and ext3 file systems. ++.SH RED HAT ENTERPRISE LINUX 8 ++The Ext4 file system is fully supported by Red Hat when using default ++mke2fs and mount options. In addition, the following non-default mke2fs ++features and mount options are also fully supported. ++.SH "Non-default features:" ++project ++.br ++quota ++.br ++mmp ++.br ++.SH "Non-default mount options:" ++bsddf|minixdf ++.br ++grpid|bsdgroups and nogrpid|sysvgroups ++.br ++resgid=n and resuid=n ++.br ++errors={continue|remount-ro|panic} ++.br ++commit=nrsec ++.br ++max_batch_time=usec ++.br ++min_batch_time=usec ++.br ++grpquota|noquota|quota|usrquota ++.br ++prjquota ++.br ++dax ++.br ++lazytime|nolazytime ++.br ++discard|nodiscard ++.br ++init_itable|noinit_itable ++.br ++jqfmt={vfsold|vfsv0|vfsv1} ++.br ++usrjquota=aquota.user|grpjquota=aquota.group ++.PP ++For more information on features and mount options, see the ++.BR ext4 ++man page. Ext4 features and mount options not listed above may not be ++fully supported by Red Hat. If your workload requires a feature or mount ++option that is not fully in this Red Hat release, contact Red Hat support ++to evaluate it for inclusion in our supported list. + .SH FILE SYSTEM FEATURES + A file system formatted for ext2, ext3, or ext4 can have some + collection of the following file system feature flags enabled. Some of +diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in +index e6bfc6d6..6106342b 100644 +--- a/misc/mke2fs.8.in ++++ b/misc/mke2fs.8.in +@@ -204,6 +204,54 @@ overridden by the options listed below, are controlled by the + configuration file. See the + .BR mke2fs.conf (5) + manual page for more details. ++.SH RED HAT ENTERPRISE LINUX 8 ++The Ext4 file system is fully supported by Red Hat when using default ++mke2fs and mount options. In addition, the following non-default mke2fs ++features and mount options are also fully supported. ++.SH "Non-default features:" ++project ++.br ++quota ++.br ++mmp ++.br ++.SH "Non-default mount options:" ++bsddf|minixdf ++.br ++grpid|bsdgroups and nogrpid|sysvgroups ++.br ++resgid=n and resuid=n ++.br ++errors={continue|remount-ro|panic} ++.br ++commit=nrsec ++.br ++max_batch_time=usec ++.br ++min_batch_time=usec ++.br ++grpquota|noquota|quota|usrquota ++.br ++prjquota ++.br ++dax ++.br ++lazytime|nolazytime ++.br ++discard|nodiscard ++.br ++init_itable|noinit_itable ++.br ++jqfmt={vfsold|vfsv0|vfsv1} ++.br ++usrjquota=aquota.user|grpjquota=aquota.group ++.PP ++For more information on features and mount options, see the ++.BR ext4 ++man page. Ext4 features and mount options not listed above may not be ++fully supported by Red Hat. If your workload requires a feature or mount ++option that is not fully in this Red Hat release, contact Red Hat support ++to evaluate it for inclusion in our supported list. + .SH OPTIONS + .TP + .BI \-b " block-size" +-- +2.21.3 + diff --git a/SOURCES/e2fsprogs-1.45.6-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch b/SOURCES/e2fsprogs-1.45.6-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch new file mode 100644 index 0000000..a4fe78a --- /dev/null +++ b/SOURCES/e2fsprogs-1.45.6-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch @@ -0,0 +1,34 @@ +From 42e4b2148a42ce35d5bc86586341a887928ec4dc Mon Sep 17 00:00:00 2001 +From: Lukas Czerner +Date: Tue, 17 Dec 2019 11:24:31 +0100 +Subject: [PATCH 3/7] mke2fs.conf: Introduce rhel6 and rhel7 fs_type + +Signed-off-by: Lukas Czerner +--- + misc/mke2fs.conf.in | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in +index 01e35cf8..a533b210 100644 +--- a/misc/mke2fs.conf.in ++++ b/misc/mke2fs.conf.in +@@ -14,6 +14,16 @@ + features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize + inode_size = 256 + } ++ rhel6_ext4 = { ++ features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize ++ inode_size = 256 ++ enable_periodic_fsck = 1 ++ default_mntopts = "" ++ } ++ rhel7_ext4 = { ++ features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize,64bit ++ inode_size = 256 ++ } + small = { + blocksize = 1024 + inode_size = 128 +-- +2.21.3 + diff --git a/SPECS/e2fsprogs.spec b/SPECS/e2fsprogs.spec index 012fc4d..6cc8085 100644 --- a/SPECS/e2fsprogs.spec +++ b/SPECS/e2fsprogs.spec @@ -1,7 +1,7 @@ Summary: Utilities for managing ext2, ext3, and ext4 file systems Name: e2fsprogs -Version: 1.45.4 -Release: 3%{?dist} +Version: 1.45.6 +Release: 1%{?dist} # License tags based on COPYING file distinctions for various components License: GPLv2 @@ -27,25 +27,13 @@ BuildRequires: libuuid-devel BuildRequires: gettext BuildRequires: multilib-rpm-config -Patch0: e2fsprogs-1.45.4-Makefile.in-Disable-e2scrub.patch -Patch1: e2fsprogs-1.45.4-mke2fs.conf-Disable-fname_encoding-feature.patch -Patch2: e2fsprogs-1.45.4-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch -Patch3: e2fsprogs-1.45.4-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch -Patch4: e2fsprogs-1.45.4-man-Add-note-about-RHEL8-supported-features-and-moun.patch -Patch5: e2fsprogs-1.45.5-libext2fs-fix-bug-when-reading-or-writing-more-than-.patch -Patch6: e2fsprogs-1.45.5-libext2fs-fix-UBSan-when-updating-an-inline_data-fil.patch -Patch7: e2fsprogs-1.45.5-Fix-UBSan-when-shifting-1LL-63.patch -Patch8: e2fsprogs-1.45.5-libext2fs-properly-free-the-bitmaps-in-read_bitmap-s.patch -Patch9: e2fsprogs-1.45.5-libext2fs-verify-the-block-numbers-for-the-allocatio.patch -Patch10: e2fsprogs-1.45.5-tune2fs-prohibit-toggling-uninit_bg-on-live-filesyst.patch -Patch11: e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch -Patch12: e2fsprogs-1.45.5-e2fsck-don-t-try-to-rehash-a-deleted-directory.patch -Patch13: e2fsprogs-1.45.5-e2fsck-fix-use-after-free-in-calculate_tree.patch -Patch14: e2fsprogs-1.45.5-e2fsck-don-t-check-for-future-superblock-times-if-ch.patch -Patch15: e2fsprogs-1.45.5-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch -Patch16: e2fsprogs-1.45.5-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch -Patch17: e2fsprogs-1.45.5-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch -Patch18: e2fsprogs-1.45.5-e2fsck-fix-to-return-ENOMEM-in-alloc_size_dir.patch +Patch0: e2fsprogs-1.45.6-Makefile.in-Disable-e2scrub.patch +Patch1: e2fsprogs-1.45.6-Revert-fuse2fs-install-fuse2fs-in-usr-bin-instead-of.patch +Patch2: e2fsprogs-1.45.6-mke2fs.conf-Introduce-rhel6-and-rhel7-fs_type.patch +Patch3: e2fsprogs-1.45.6-man-Add-note-about-RHEL8-supported-features-and-moun.patch +Patch4: e2fsprogs-1.45.6-Revert-libext2fs-revamp-bitmap-types-to-fix-LTO-warn.patch +Patch5: e2fsprogs-1.45.6-Revert-libext2fs-hide-struct-ext2fs_hashmap-as-an-in.patch +Patch6: e2fsprogs-1.45.6-ext2fs-fix-ABI-change-in-the-struct_ext2_filsys-stru.patch %description The e2fsprogs package contains a number of utilities for creating, @@ -171,18 +159,6 @@ It was originally inspired by the Multics SubSystem library. %patch4 -p1 %patch5 -p1 %patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 %build %configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \ @@ -345,6 +321,9 @@ exit 0 %{_libdir}/pkgconfig/ss.pc %changelog +* Wed Jun 03 2020 Lukas Czerner 1.45.6-5 +- Rebase to the upstream release 1.45.6 (#1843548) + * Tue Jan 14 2020 Lukas Czerner 1.45.4-3 - Fix clang warning introduced in previous release (#1783777)