diff --git a/.gitignore b/.gitignore index 16040cc..3b0156b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ e2fsprogs-1.41.12.tar.gz /e2fsprogs-1.42.tar.gz /e2fsprogs-1.42.1.tar.gz /e2fsprogs-1.42.2.tar.gz +/e2fsprogs-1.42.3.tar.gz diff --git a/e2fsprogs-1.42.2-32-bit-ffz-fix.patch b/e2fsprogs-1.42.2-32-bit-ffz-fix.patch deleted file mode 100644 index ef7298e..0000000 --- a/e2fsprogs-1.42.2-32-bit-ffz-fix.patch +++ /dev/null @@ -1,452 +0,0 @@ -[PATCH 1/3] libext2fs: add 32-bit compat code for ext2fs_find_first_zero_generic_bmap() - -The lack of 32-bit support was causing febootstrap to crash since it -wasn't passing EXT2_FLAG_64BITS when opening the file system, so we -were still using the legacy bitmaps. - -Addresses-Red-Hat-Bugzilla: #808421 - -Signed-off-by: "Theodore Ts'o" ---- - -[PATCH 2/3] libext2fs: use correct types in ext2fs_find_first_zero_block_bitmap2() - -Fortunately nothing was using this inline function, so we'll just fix -the types in its function signature, which were nonsensical (this was -caused by a cut-and-paste error). - -Signed-off-by: "Theodore Ts'o" ---- - -[PATCH 3/3] libext2fs: improve testing coverage of tst_bitmaps - -Improve the test coverage of tst_bitmaps by: - - (a) adding the ability to test the legacy (32-bit) bitmap code - (b) adding tests for ext2fs_find_first_zero_inode_bitmap2() and - ext2fs_find_first_zero_block_bitmap2() - -The recent regressions caused by the addition (and use) of -ext2fs_find_first_zero_inode_bitmap2() would have been caught if we -had added these tests first. (Another object lesson in why unit tests -are critically important!) - -Signed-off-by: "Theodore Ts'o" ---- - -Index: e2fsprogs-1.42.2/lib/ext2fs/Makefile.in -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/Makefile.in -+++ e2fsprogs-1.42.2/lib/ext2fs/Makefile.in -@@ -403,6 +403,9 @@ check:: tst_bitops tst_badblocks tst_isc - LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) \ - ./tst_bitmaps -t 3 -f $(srcdir)/tst_bitmaps_cmds > tst_bitmaps_out - diff $(srcdir)/tst_bitmaps_exp tst_bitmaps_out -+ LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) \ -+ ./tst_bitmaps -l -f $(srcdir)/tst_bitmaps_cmds > tst_bitmaps_out -+ diff $(srcdir)/tst_bitmaps_exp tst_bitmaps_out - - installdirs:: - $(E) " MKINSTALLDIRS $(libdir) $(includedir)/ext2fs" -Index: e2fsprogs-1.42.2/lib/ext2fs/bitops.h -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/bitops.h -+++ e2fsprogs-1.42.2/lib/ext2fs/bitops.h -@@ -153,9 +153,9 @@ extern void ext2fs_fast_unmark_inode_bit - extern int ext2fs_fast_test_inode_bitmap2(ext2fs_inode_bitmap bitmap, - ext2_ino_t inode); - extern errcode_t ext2fs_find_first_zero_block_bitmap2(ext2fs_block_bitmap bitmap, -- ext2_ino_t start, -- ext2_ino_t end, -- ext2_ino_t *out); -+ blk64_t start, -+ blk64_t end, -+ blk64_t *out); - extern errcode_t ext2fs_find_first_zero_inode_bitmap2(ext2fs_inode_bitmap bitmap, - ext2_ino_t start, - ext2_ino_t end, -@@ -605,9 +605,9 @@ _INLINE_ int ext2fs_fast_test_inode_bitm - } - - _INLINE_ errcode_t ext2fs_find_first_zero_block_bitmap2(ext2fs_block_bitmap bitmap, -- ext2_ino_t start, -- ext2_ino_t end, -- ext2_ino_t *out) -+ blk64_t start, -+ blk64_t end, -+ blk64_t *out) - { - __u64 o; - errcode_t rv; -Index: e2fsprogs-1.42.2/lib/ext2fs/ext2fs.h -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/ext2fs.h -+++ e2fsprogs-1.42.2/lib/ext2fs/ext2fs.h -@@ -1168,6 +1168,9 @@ extern errcode_t ext2fs_set_generic_bitm - errcode_t magic, - __u32 start, __u32 num, - void *in); -+extern errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap, -+ __u32 start, __u32 end, -+ __u32 *out); - - /* gen_bitmap64.c */ - -Index: e2fsprogs-1.42.2/lib/ext2fs/gen_bitmap.c -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/gen_bitmap.c -+++ e2fsprogs-1.42.2/lib/ext2fs/gen_bitmap.c -@@ -504,6 +504,30 @@ static int ext2fs_test_clear_generic_bit - return ext2fs_mem_is_zero(ADDR + start_byte, len_byte); - } - -+errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap, -+ __u32 start, __u32 end, -+ __u32 *out) -+{ -+ blk_t b; -+ -+ if (start < bitmap->start || end > bitmap->end || start > end) { -+ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start); -+ return EINVAL; -+ } -+ -+ while (start <= end) { -+ b = ext2fs_test_bit(start - bitmap->start, bitmap->bitmap); -+ if (!b) { -+ *out = start; -+ return 0; -+ } -+ start++; -+ } -+ -+ return ENOENT; -+} -+ -+ - int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap, - blk_t block, int num) - { -@@ -558,3 +582,4 @@ void ext2fs_unmark_block_bitmap_range(ex - ext2fs_fast_clear_bit(block + i - bitmap->start, - bitmap->bitmap); - } -+ -Index: e2fsprogs-1.42.2/lib/ext2fs/gen_bitmap64.c -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/gen_bitmap64.c -+++ e2fsprogs-1.42.2/lib/ext2fs/gen_bitmap64.c -@@ -768,12 +768,36 @@ errcode_t ext2fs_find_first_zero_generic - { - int b; - -- if (bitmap->bitmap_ops->find_first_zero) -- return bitmap->bitmap_ops->find_first_zero(bitmap, start, end, out); -+ if (!bitmap) -+ return EINVAL; -+ -+ if (EXT2FS_IS_64_BITMAP(bitmap) && bitmap->bitmap_ops->find_first_zero) -+ return bitmap->bitmap_ops->find_first_zero(bitmap, start, -+ end, out); -+ -+ if (EXT2FS_IS_32_BITMAP(bitmap)) { -+ blk_t blk = 0; -+ errcode_t retval; -+ -+ if (((start) & ~0xffffffffULL) || -+ ((end) & ~0xffffffffULL)) { -+ ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start); -+ return EINVAL; -+ } -+ -+ retval = ext2fs_find_first_zero_generic_bitmap(bitmap, start, -+ end, &blk); -+ if (retval == 0) -+ *out = blk; -+ return retval; -+ } - -- if (!bitmap || !EXT2FS_IS_64_BITMAP(bitmap) || bitmap->cluster_bits) -+ if (!EXT2FS_IS_64_BITMAP(bitmap)) - return EINVAL; - -+ start >>= bitmap->cluster_bits; -+ end >>= bitmap->cluster_bits; -+ - if (start < bitmap->start || end > bitmap->end || start > end) { - warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start); - return EINVAL; -@@ -782,7 +806,7 @@ errcode_t ext2fs_find_first_zero_generic - while (start <= end) { - b = bitmap->bitmap_ops->test_bmap(bitmap, start); - if (!b) { -- *out = start; -+ *out = start << bitmap->cluster_bits; - return 0; - } - start++; -Index: e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps.c -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/tst_bitmaps.c -+++ e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps.c -@@ -151,7 +151,7 @@ int check_fs_open(char *name) - - static void setup_filesystem(const char *name, - unsigned int blocks, unsigned int inodes, -- unsigned int type) -+ unsigned int type, int flags) - { - struct ext2_super_block param; - errcode_t retval; -@@ -160,7 +160,7 @@ static void setup_filesystem(const char - ext2fs_blocks_count_set(¶m, blocks); - param.s_inodes_count = inodes; - -- retval = ext2fs_initialize("test fs", EXT2_FLAG_64BITS, ¶m, -+ retval = ext2fs_initialize("test fs", flags, ¶m, - test_io_manager, &test_fs); - - if (retval) { -@@ -198,6 +198,7 @@ void setup_cmd(int argc, char **argv) - unsigned int blocks = 128; - unsigned int inodes = 0; - unsigned int type = EXT2FS_BMAP64_BITARRAY; -+ int flags = EXT2_FLAG_64BITS; - - if (test_fs) { - ext2fs_close(test_fs); -@@ -205,7 +206,7 @@ void setup_cmd(int argc, char **argv) - } - - reset_getopt(); -- while ((c = getopt(argc, argv, "b:i:t:")) != EOF) { -+ while ((c = getopt(argc, argv, "b:i:lt:")) != EOF) { - switch (c) { - case 'b': - blocks = parse_ulong(optarg, argv[0], -@@ -219,6 +220,9 @@ void setup_cmd(int argc, char **argv) - if (err) - return; - break; -+ case 'l': /* Legacy bitmaps */ -+ flags = 0; -+ break; - case 't': - type = parse_ulong(optarg, argv[0], - "bitmap backend type", &err); -@@ -231,7 +235,7 @@ void setup_cmd(int argc, char **argv) - return; - } - } -- setup_filesystem(argv[0], blocks, inodes, type); -+ setup_filesystem(argv[0], blocks, inodes, type, flags); - } - - void close_cmd(int argc, char **argv) -@@ -399,6 +403,40 @@ void do_testb(int argc, char *argv[]) - printf("Block %u is %s\n", block, test_result ? "set" : "clear"); - } - -+void do_ffzb(int argc, char *argv[]) -+{ -+ unsigned int start, end; -+ int err; -+ errcode_t retval; -+ blk64_t out; -+ -+ if (check_fs_open(argv[0])) -+ return; -+ -+ if (argc != 3 && argc != 3) { -+ com_err(argv[0], 0, "Usage: ffzb "); -+ return; -+ } -+ -+ start = parse_ulong(argv[1], argv[0], "start", &err); -+ if (err) -+ return; -+ -+ end = parse_ulong(argv[2], argv[0], "end", &err); -+ if (err) -+ return; -+ -+ retval = ext2fs_find_first_zero_block_bitmap2(test_fs->block_map, -+ start, end, &out); -+ if (retval) { -+ printf("ext2fs_find_first_zero_block_bitmap2() returned %s\n", -+ error_message(retval)); -+ return; -+ } -+ printf("First unmarked block is %llu\n", out); -+} -+ -+ - void do_zerob(int argc, char *argv[]) - { - if (check_fs_open(argv[0])) -@@ -488,6 +526,40 @@ void do_testi(int argc, char *argv[]) - printf("Inode %u is %s\n", inode, test_result ? "set" : "clear"); - } - -+void do_ffzi(int argc, char *argv[]) -+{ -+ unsigned int start, end; -+ int err; -+ errcode_t retval; -+ ext2_ino_t out; -+ -+ if (check_fs_open(argv[0])) -+ return; -+ -+ if (argc != 3 && argc != 3) { -+ com_err(argv[0], 0, "Usage: ffzi "); -+ return; -+ } -+ -+ start = parse_ulong(argv[1], argv[0], "start", &err); -+ if (err) -+ return; -+ -+ end = parse_ulong(argv[2], argv[0], "end", &err); -+ if (err) -+ return; -+ -+ retval = ext2fs_find_first_zero_inode_bitmap2(test_fs->inode_map, -+ start, end, &out); -+ if (retval) { -+ printf("ext2fs_find_first_zero_inode_bitmap2() returned %s\n", -+ error_message(retval)); -+ return; -+ } -+ printf("First unmarked inode is %u\n", out); -+} -+ -+ - void do_zeroi(int argc, char *argv[]) - { - if (check_fs_open(argv[0])) -@@ -506,10 +578,11 @@ int main(int argc, char **argv) - char *request = (char *)NULL; - char *cmd_file = 0; - int sci_idx; -+ int flags = EXT2_FLAG_64BITS; - - add_error_table(&et_ss_error_table); - add_error_table(&et_ext2_error_table); -- while ((c = getopt (argc, argv, "b:i:t:R:f:")) != EOF) { -+ while ((c = getopt (argc, argv, "b:i:lt:R:f:")) != EOF) { - switch (c) { - case 'b': - blocks = parse_ulong(optarg, argv[0], -@@ -523,6 +596,9 @@ int main(int argc, char **argv) - if (err) - return; - break; -+ case 'l': /* Legacy bitmaps */ -+ flags = 0; -+ break; - case 't': - type = parse_ulong(optarg, argv[0], - "bitmap backend type", &err); -@@ -558,7 +634,7 @@ int main(int argc, char **argv) - printf("%s %s. Type '?' for a list of commands.\n\n", - subsystem_name, version); - -- setup_filesystem(argv[0], blocks, inodes, type); -+ setup_filesystem(argv[0], blocks, inodes, type, flags); - - if (request) { - code = ss_execute_line(sci_idx, request); -Index: e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps_cmd.ct -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/tst_bitmaps_cmd.ct -+++ e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps_cmd.ct -@@ -21,6 +21,9 @@ request do_clearb, "Clear block", - request do_testb, "Test block", - test_block, testb; - -+request do_ffzb, "Find first zero block", -+ find_first_zero_block, ffzb; -+ - request do_zerob, "Clear block bitmap", - clear_block_bitmap, zerob; - -@@ -33,6 +36,9 @@ request do_cleari, "Clear inode", - request do_testi, "Test inode", - test_inode, testi; - -+request do_ffzi, "Find first zero inode", -+ find_first_zero_inode, ffzi; -+ - request do_zeroi, "Clear inode bitmap", - clear_inode_bitmap, zeroi; - -Index: e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps_cmds -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/tst_bitmaps_cmds -+++ e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps_cmds -@@ -16,6 +16,12 @@ testb 11 - testb 15 - testb 16 - dump_bb -+ffzb 11 16 -+ffzb 12 16 -+ffzb 12 20 -+clearb 13 -+ffzb 12 20 -+setb 13 - clearb 12 7 - testb 12 7 - setb 15 -@@ -33,6 +39,11 @@ seti 5 - testi 6 - testi 1 - dump_ib -+ffzi 1 6 -+ffzi 2 5 -+ffzi 2 6 -+cleari 4 -+ffzi 2 6 - zeroi - testi 5 - seti 5 -Index: e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps_exp -=================================================================== ---- e2fsprogs-1.42.2.orig/lib/ext2fs/tst_bitmaps_exp -+++ e2fsprogs-1.42.2/lib/ext2fs/tst_bitmaps_exp -@@ -36,6 +36,18 @@ tst_bitmaps: testb 16 - Block 16 is set - tst_bitmaps: dump_bb - block bitmap: 00f80000000000000000000000000000 -+tst_bitmaps: ffzb 11 16 -+First unmarked block is 11 -+tst_bitmaps: ffzb 12 16 -+ext2fs_find_first_zero_block_bitmap2() returned No such file or directory -+tst_bitmaps: ffzb 12 20 -+First unmarked block is 17 -+tst_bitmaps: clearb 13 -+Clearing block 13, was set before -+tst_bitmaps: ffzb 12 20 -+First unmarked block is 13 -+tst_bitmaps: setb 13 -+Setting block 13, was clear before - tst_bitmaps: clearb 12 7 - Clearing blocks 12 to 18 - tst_bitmaps: testb 12 7 -@@ -70,6 +82,16 @@ tst_bitmaps: testi 1 - Inode 1 is clear - tst_bitmaps: dump_ib - inode bitmap: 1e000000 -+tst_bitmaps: ffzi 1 6 -+First unmarked inode is 1 -+tst_bitmaps: ffzi 2 5 -+ext2fs_find_first_zero_inode_bitmap2() returned No such file or directory -+tst_bitmaps: ffzi 2 6 -+First unmarked inode is 6 -+tst_bitmaps: cleari 4 -+Clearing inode 4, was set before -+tst_bitmaps: ffzi 2 6 -+First unmarked inode is 4 - tst_bitmaps: zeroi - Clearing inode bitmap. - tst_bitmaps: testi 5 diff --git a/e2fsprogs.spec b/e2fsprogs.spec index 861e4d8..dc4fddd 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -1,7 +1,7 @@ Summary: Utilities for managing ext2, ext3, and ext4 filesystems Name: e2fsprogs -Version: 1.42.2 -Release: 6%{?dist} +Version: 1.42.3 +Release: 1%{?dist} # License tags based on COPYING file distinctions for various components License: GPLv2 @@ -11,7 +11,6 @@ Source1: ext2_types-wrapper.h Source2: e2fsck.conf Patch1: e2fsprogs-1.40.4-sb_feature_check_ignore.patch -Patch2: e2fsprogs-1.42.2-32-bit-ffz-fix.patch Url: http://e2fsprogs.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -148,9 +147,6 @@ It was originally inspired by the Multics SubSystem library. # after an selinux install... %patch1 -p1 -b .featurecheck -# Handle 32-bit bitmaps in new find_first_zero functions (upstream patch) -%patch2 -p1 - %build %configure --enable-elf-shlibs --enable-nls --disable-uuidd --disable-fsck \ --disable-e2initrd-helper --disable-libblkid --disable-libuuid \ @@ -324,6 +320,9 @@ exit 0 %{_libdir}/pkgconfig/ss.pc %changelog +* Mon May 14 2013 Eric Sandeen 1.42.3-1 +- New upstream release + * Sun Apr 22 2012 Eric Sandeen 1.42.2-6 - Add missing [options] tag to e2fsck.conf diff --git a/sources b/sources index 8b57973..a0105e7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -04f4561a54ad0419248316a00c016baa e2fsprogs-1.42.2.tar.gz +73431146f58d40fe1375aba2060f0da8 e2fsprogs-1.42.3.tar.gz