diff --git a/.e2fsprogs.metadata b/.e2fsprogs.metadata new file mode 100644 index 0000000..1ed3849 --- /dev/null +++ b/.e2fsprogs.metadata @@ -0,0 +1 @@ +132ecc3dd92b3ac9e488b7c8bbe2e769001856d1 SOURCES/e2fsprogs-1.44.6.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5eda163 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/e2fsprogs-1.44.6.tar.xz diff --git a/SOURCES/e2fsprogs-1.44.6-debugfs-fix-printing-of-xattrs-with-ea_in_inode-valu.patch b/SOURCES/e2fsprogs-1.44.6-debugfs-fix-printing-of-xattrs-with-ea_in_inode-valu.patch new file mode 100644 index 0000000..ee2714b --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-debugfs-fix-printing-of-xattrs-with-ea_in_inode-valu.patch @@ -0,0 +1,29 @@ +From 563d63dbf762c41f908b5e10deb1b115def93bcc Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Tue, 26 Mar 2019 09:36:53 -0400 +Subject: [PATCH 4/4] debugfs: fix printing of xattrs with ea_in_inode values + +Due to a missing "else" debugfs was printing (garbage) from the xattr +buffer which could potentially overrun the end of the buffer. + +Signed-off-by: Theodore Ts'o +--- + debugfs/xattrs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/debugfs/xattrs.c b/debugfs/xattrs.c +index c29761ec..dde9af2f 100644 +--- a/debugfs/xattrs.c ++++ b/debugfs/xattrs.c +@@ -448,7 +448,7 @@ static void dump_xattr_raw_entries(FILE *f, unsigned char *buf, + else if (ent.e_value_offs >= len || + (vstart + ent.e_value_size) > len) + fprintf(f, ""); +- if (is_mostly_printable((char *)(buf + vstart), ++ else if (is_mostly_printable((char *)(buf + vstart), + ent.e_value_size)) + safe_print(f, (char *)(buf + vstart), + ent.e_value_size); +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-debugfs-fix-set_inode_field-so-it-can-set-the-checks.patch b/SOURCES/e2fsprogs-1.44.6-debugfs-fix-set_inode_field-so-it-can-set-the-checks.patch new file mode 100644 index 0000000..bf52317 --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-debugfs-fix-set_inode_field-so-it-can-set-the-checks.patch @@ -0,0 +1,244 @@ +From 5862f45c314aaf97ce098add06c42b5d592dc984 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Thu, 13 Dec 2018 00:53:16 -0500 +Subject: [PATCH 2/4] debugfs: fix set_inode_field so it can set the checksum + field + +Previously, setting the inode field was a no-op, since the library +function ext2fs_write_inode_full() would override whatever value was +set by debugfs. Use the new ext2fs_write_inode2() interface so we can +in fact set the checksum to a potentially wrong value. Also, ignore +the inode checksum failures if we are setting the checksum, and if the +checksum value is "calc", set the inode checksum to the correct value. + +Signed-off-by: Theodore Ts'o +--- + debugfs/debugfs.c | 12 +++---- + debugfs/debugfs.h | 8 ++--- + debugfs/set_fields.c | 84 +++++++++++++++++++++++++++++++++++++++----- + debugfs/util.c | 17 +++++---- + 4 files changed, 94 insertions(+), 27 deletions(-) + +diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c +index faae12da..06a93270 100644 +--- a/debugfs/debugfs.c ++++ b/debugfs/debugfs.c +@@ -985,8 +985,8 @@ void do_stat(int argc, char *argv[]) + return; + } + +- if (debugfs_read_inode_full(inode, inode_buf, argv[0], +- EXT2_INODE_SIZE(current_fs->super))) { ++ if (debugfs_read_inode2(inode, inode_buf, argv[0], ++ EXT2_INODE_SIZE(current_fs->super), 0)) { + free(inode_buf); + return; + } +@@ -1608,12 +1608,12 @@ void do_copy_inode(int argc, char *argv[]) + if (!dest_ino) + return; + +- if (debugfs_read_inode_full(src_ino, (struct ext2_inode *) buf, +- argv[0], sizeof(buf))) ++ if (debugfs_read_inode2(src_ino, (struct ext2_inode *) buf, ++ argv[0], sizeof(buf), 0)) + return; + +- if (debugfs_write_inode_full(dest_ino, (struct ext2_inode *) buf, +- argv[0], sizeof(buf))) ++ if (debugfs_write_inode2(dest_ino, (struct ext2_inode *) buf, ++ argv[0], sizeof(buf), 0)) + return; + } + +diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h +index 93f036de..97fdde7e 100644 +--- a/debugfs/debugfs.h ++++ b/debugfs/debugfs.h +@@ -54,12 +54,12 @@ extern int common_block_args_process(int argc, char *argv[], + blk64_t *block, blk64_t *count); + extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode, + const char *cmd); +-extern int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode, +- const char *cmd, int bufsize); ++extern int debugfs_read_inode2(ext2_ino_t ino, struct ext2_inode * inode, ++ const char *cmd, int bufsize, int flags); + extern int debugfs_write_inode(ext2_ino_t ino, struct ext2_inode * inode, + const char *cmd); +-extern int debugfs_write_inode_full(ext2_ino_t ino, struct ext2_inode * inode, +- const char *cmd, int bufsize); ++extern int debugfs_write_inode2(ext2_ino_t ino, struct ext2_inode * inode, ++ const char *cmd, int bufsize, int flags); + extern int debugfs_write_new_inode(ext2_ino_t ino, struct ext2_inode * inode, + const char *cmd); + extern int ext2_file_type(unsigned int mode); +diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c +index 3cdf617c..4f033249 100644 +--- a/debugfs/set_fields.c ++++ b/debugfs/set_fields.c +@@ -53,6 +53,7 @@ static int array_idx; + + #define FLAG_ARRAY 0x0001 + #define FLAG_ALIAS 0x0002 /* Data intersects with other field */ ++#define FLAG_CSUM 0x0004 + + struct field_set_info { + const char *name; +@@ -72,6 +73,8 @@ static errcode_t parse_hashalg(struct field_set_info *info, char *field, char *a + static errcode_t parse_time(struct field_set_info *info, char *field, char *arg); + static errcode_t parse_bmap(struct field_set_info *info, char *field, char *arg); + static errcode_t parse_gd_csum(struct field_set_info *info, char *field, char *arg); ++static errcode_t parse_inode_csum(struct field_set_info *info, char *field, ++ char *arg); + static errcode_t parse_mmp_clear(struct field_set_info *info, char *field, + char *arg); + +@@ -218,7 +221,7 @@ static struct field_set_info inode_fields[] = { + { "frag", &set_inode.osd2.hurd2.h_i_frag, NULL, 1, parse_uint, FLAG_ALIAS }, + { "fsize", &set_inode.osd2.hurd2.h_i_fsize, NULL, 1, parse_uint }, + { "checksum", &set_inode.osd2.linux2.l_i_checksum_lo, +- &set_inode.i_checksum_hi, 2, parse_uint }, ++ &set_inode.i_checksum_hi, 2, parse_inode_csum, FLAG_CSUM }, + { "author", &set_inode.osd2.hurd2.h_i_author, NULL, + 4, parse_uint, FLAG_ALIAS }, + { "extra_isize", &set_inode.i_extra_isize, NULL, +@@ -665,6 +668,68 @@ static errcode_t parse_gd_csum(struct field_set_info *info, char *field, + return parse_uint(info, field, arg); + } + ++static errcode_t parse_inode_csum(struct field_set_info *info, char *field, ++ char *arg) ++{ ++ errcode_t retval = 0; ++ __u32 crc; ++ int is_large_inode = 0; ++ struct ext2_inode_large *tmp_inode; ++ ++ if (strcmp(arg, "calc") == 0) { ++ size_t sz = EXT2_INODE_SIZE(current_fs->super); ++ struct ext2_inode_large *tmp_inode = NULL; ++ ++ retval = ext2fs_get_mem(sz, &tmp_inode); ++ if (retval) ++ goto out; ++ ++ retval = ext2fs_read_inode_full(current_fs, set_ino, ++ (struct ext2_inode *) tmp_inode, ++ sz); ++ if (retval) ++ goto out; ++ ++#ifdef WORDS_BIGENDIAN ++ ext2fs_swap_inode_full(current_fs, tmp_inode, ++ tmp_inode, 1, sz); ++#endif ++ ++ if (sz > EXT2_GOOD_OLD_INODE_SIZE) ++ is_large_inode = 1; ++ ++ retval = ext2fs_inode_csum_set(current_fs, set_ino, ++ tmp_inode); ++ if (retval) ++ goto out; ++#ifdef WORDS_BIGENDIAN ++ crc = set_inode.i_checksum_lo = ++ ext2fs_swab16(tmp_inode->i_checksum_lo); ++ ++#else ++ crc = set_inode.i_checksum_lo = tmp_inode->i_checksum_lo; ++#endif ++ if (is_large_inode && ++ set_inode.i_extra_isize >= ++ (offsetof(struct ext2_inode_large, ++ i_checksum_hi) - ++ EXT2_GOOD_OLD_INODE_SIZE)) { ++#ifdef WORDS_BIGENDIAN ++ set_inode.i_checksum_lo = ++ ext2fs_swab16(tmp_inode->i_checksum_lo); ++#else ++ set_inode.i_checksum_hi = tmp_inode->i_checksum_hi; ++#endif ++ crc |= ((__u32)set_inode.i_checksum_hi) << 16; ++ } ++ printf("Checksum set to 0x%08x\n", crc); ++ out: ++ ext2fs_free_mem(&tmp_inode); ++ return retval; ++ } ++ return parse_uint(info, field, arg); ++} ++ + static void print_possible_fields(struct field_set_info *fields) + { + struct field_set_info *ss; +@@ -775,16 +840,19 @@ void do_set_inode(int argc, char *argv[]) + if (!set_ino) + return; + +- if (debugfs_read_inode_full(set_ino, +- (struct ext2_inode *) &set_inode, argv[1], +- sizeof(set_inode))) ++ if (debugfs_read_inode2(set_ino, ++ (struct ext2_inode *) &set_inode, argv[1], ++ sizeof(set_inode), ++ (ss->flags & FLAG_CSUM) ? ++ READ_INODE_NOCSUM : 0)) + return; + + if (ss->func(ss, argv[2], argv[3]) == 0) { +- if (debugfs_write_inode_full(set_ino, +- (struct ext2_inode *) &set_inode, +- argv[1], sizeof(set_inode))) +- return; ++ debugfs_write_inode2(set_ino, ++ (struct ext2_inode *) &set_inode, ++ argv[1], sizeof(set_inode), ++ (ss->flags & FLAG_CSUM) ? ++ WRITE_INODE_NOCSUM : 0); + } + } + +diff --git a/debugfs/util.c b/debugfs/util.c +index 452de749..759bb392 100644 +--- a/debugfs/util.c ++++ b/debugfs/util.c +@@ -420,12 +420,12 @@ int common_block_args_process(int argc, char *argv[], + return 0; + } + +-int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode, +- const char *cmd, int bufsize) ++int debugfs_read_inode2(ext2_ino_t ino, struct ext2_inode * inode, ++ const char *cmd, int bufsize, int flags) + { + int retval; + +- retval = ext2fs_read_inode_full(current_fs, ino, inode, bufsize); ++ retval = ext2fs_read_inode2(current_fs, ino, inode, bufsize, flags); + if (retval) { + com_err(cmd, retval, "while reading inode %u", ino); + return 1; +@@ -446,15 +446,14 @@ int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode, + return 0; + } + +-int debugfs_write_inode_full(ext2_ino_t ino, +- struct ext2_inode *inode, +- const char *cmd, +- int bufsize) ++int debugfs_write_inode2(ext2_ino_t ino, ++ struct ext2_inode *inode, ++ const char *cmd, ++ int bufsize, int flags) + { + int retval; + +- retval = ext2fs_write_inode_full(current_fs, ino, +- inode, bufsize); ++ retval = ext2fs_write_inode2(current_fs, ino, inode, bufsize, flags); + if (retval) { + com_err(cmd, retval, "while writing inode %u", ino); + return 1; +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-debugfs-remove-unused-variable-tmp_inode.patch b/SOURCES/e2fsprogs-1.44.6-debugfs-remove-unused-variable-tmp_inode.patch new file mode 100644 index 0000000..5fec653 --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-debugfs-remove-unused-variable-tmp_inode.patch @@ -0,0 +1,28 @@ +From 68c586c2b58cfb1677a1b37f6e55025d905228ed Mon Sep 17 00:00:00 2001 +From: Eric Biggers +Date: Sun, 28 Apr 2019 20:37:21 -0400 +Subject: [PATCH 1/4] debugfs: remove unused variable 'tmp_inode' + +In parse_inode_csum(), the outer 'tmp_inode' variable is never used. + +Signed-off-by: Eric Biggers +Signed-off-by: Theodore Ts'o +--- + debugfs/set_fields.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c +index 4f033249..9cf8c735 100644 +--- a/debugfs/set_fields.c ++++ b/debugfs/set_fields.c +@@ -674,7 +674,6 @@ static errcode_t parse_inode_csum(struct field_set_info *info, char *field, + errcode_t retval = 0; + __u32 crc; + int is_large_inode = 0; +- struct ext2_inode_large *tmp_inode; + + if (strcmp(arg, "calc") == 0) { + size_t sz = EXT2_INODE_SIZE(current_fs->super); +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-e2fsck-check-and-fix-tails-of-all-bitmap-blocks.patch b/SOURCES/e2fsprogs-1.44.6-e2fsck-check-and-fix-tails-of-all-bitmap-blocks.patch new file mode 100644 index 0000000..3b3064f --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-e2fsck-check-and-fix-tails-of-all-bitmap-blocks.patch @@ -0,0 +1,568 @@ +From 6e44ff6678a96b2bc5ddc42c5bf2cbad09b71af2 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Sun, 5 May 2019 16:43:33 -0400 +Subject: [PATCH 3/4] e2fsck: check and fix tails of all bitmap blocks + +Currently, e2fsck effectively checks only tail of the last inode and +block bitmap in the filesystem. Thus if some previous bitmap has unset +bits it goes unnoticed. Mostly these tail bits in the bitmap are +ignored; however, if blocks_per_group are smaller than 8*blocksize, +the multi-block allocator in the kernel can get confused when the tail +bits are unset and return bogus free extent. + +Add support to libext2fs to check these bitmap tails when loading +bitmaps (as that's about the only place which has access to the bitmap +tail bits) and make e2fsck use this functionality to detect buggy bitmap +tails and fix them (by rewriting the bitmaps). + +Reported-by: Jan Kara +Signed-off-by: Theodore Ts'o +Reviewed-by: Jan Kara +--- + e2fsck/pass5.c | 40 ++++++++++++++++--- + lib/ext2fs/ext2fs.h | 2 + + lib/ext2fs/rw_bitmaps.c | 26 +++++++++++- + tests/f_bitmaps/expect.1 | 2 + + tests/f_dup/expect.1 | 2 + + tests/f_dup2/expect.1 | 2 + + tests/f_dup3/expect.1 | 2 + + tests/f_end-bitmap/expect.1 | 2 + + tests/f_illbbitmap/expect.1 | 2 + + tests/f_illibitmap/expect.1 | 2 + + tests/f_illitable_flexbg/expect.1 | 2 + + tests/f_lpf/expect.1 | 2 + + tests/f_overfsblks/expect.1 | 2 + + tests/f_super_bad_csum/expect.1 | 4 +- + tests/j_corrupt_ext_jnl_sb_csum/expect | 2 + + tests/j_ext_long_trans/expect | 2 + + tests/j_long_trans/expect | 2 + + tests/j_long_trans_mcsum_32bit/expect | 2 + + tests/j_long_trans_mcsum_64bit/expect | 2 + + tests/j_recover_csum2_32bit/expect.1 | 2 + + tests/j_recover_csum2_64bit/expect.1 | 2 + + tests/j_short_trans/expect | 2 + + tests/j_short_trans_64bit/expect | 2 + + tests/j_short_trans_mcsum_64bit/expect | 2 + + tests/j_short_trans_old_csum/expect | 2 + + tests/j_short_trans_open_recover/expect | 2 + + tests/j_short_trans_recover/expect | 2 + + .../j_short_trans_recover_mcsum_64bit/expect | 2 + + tests/t_replay_and_set/expect | 2 + + 29 files changed, 113 insertions(+), 9 deletions(-) + +diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c +index 7803e8b8..81009097 100644 +--- a/e2fsck/pass5.c ++++ b/e2fsck/pass5.c +@@ -838,6 +838,7 @@ static void check_inode_end(e2fsck_t ctx) + ext2_filsys fs = ctx->fs; + ext2_ino_t end, save_inodes_count, i; + struct problem_context pctx; ++ int asked = 0; + + clear_problem_context(&pctx); + +@@ -851,11 +852,12 @@ static void check_inode_end(e2fsck_t ctx) + return; + } + if (save_inodes_count == end) +- return; ++ goto check_intra_bg_tail; + + /* protect loop from wrap-around if end is maxed */ + for (i = save_inodes_count + 1; i <= end && i > save_inodes_count; i++) { + if (!ext2fs_test_inode_bitmap(fs->inode_map, i)) { ++ asked = 1; + if (fix_problem(ctx, PR_5_INODE_BMAP_PADDING, &pctx)) { + for (; i <= end; i++) + ext2fs_mark_inode_bitmap(fs->inode_map, +@@ -875,6 +877,20 @@ static void check_inode_end(e2fsck_t ctx) + ctx->flags |= E2F_FLAG_ABORT; /* fatal */ + return; + } ++ /* ++ * If the number of inodes per block group != blocksize, we ++ * can also have a potential problem with the tail bits in ++ * each individual inode bitmap block. If there is a problem, ++ * it would have been noticed when the bitmap was loaded. And ++ * fixing this is easy; all we need to do force the bitmap to ++ * be written back to disk. ++ */ ++check_intra_bg_tail: ++ if (!asked && fs->flags & EXT2_FLAG_IBITMAP_TAIL_PROBLEM) ++ if (fix_problem(ctx, PR_5_INODE_BMAP_PADDING, &pctx)) ++ ext2fs_mark_ib_dirty(fs); ++ else ++ ext2fs_unmark_valid(fs); + } + + static void check_block_end(e2fsck_t ctx) +@@ -882,6 +898,7 @@ static void check_block_end(e2fsck_t ctx) + ext2_filsys fs = ctx->fs; + blk64_t end, save_blocks_count, i; + struct problem_context pctx; ++ int asked = 0; + + clear_problem_context(&pctx); + +@@ -896,12 +913,13 @@ static void check_block_end(e2fsck_t ctx) + return; + } + if (save_blocks_count == end) +- return; ++ goto check_intra_bg_tail; + + /* Protect loop from wrap-around if end is maxed */ + for (i = save_blocks_count + 1; i <= end && i > save_blocks_count; i++) { + if (!ext2fs_test_block_bitmap2(fs->block_map, + EXT2FS_C2B(fs, i))) { ++ asked = 1; + if (fix_problem(ctx, PR_5_BLOCK_BMAP_PADDING, &pctx)) { + for (; i <= end; i++) + ext2fs_mark_block_bitmap2(fs->block_map, +@@ -921,7 +939,19 @@ static void check_block_end(e2fsck_t ctx) + ctx->flags |= E2F_FLAG_ABORT; /* fatal */ + return; + } ++ /* ++ * If the number of blocks per block group != blocksize, we ++ * can also have a potential problem with the tail bits in ++ * each individual block bitmap block. If there is a problem, ++ * it would have been noticed when the bitmap was loaded. And ++ * fixing this is easy; all we need to do force the bitmap to ++ * be written back to disk. ++ */ ++check_intra_bg_tail: ++ if (!asked && fs->flags & EXT2_FLAG_BBITMAP_TAIL_PROBLEM) { ++ if (fix_problem(ctx, PR_5_BLOCK_BMAP_PADDING, &pctx)) ++ ext2fs_mark_bb_dirty(fs); ++ else ++ ext2fs_unmark_valid(fs); ++ } + } +- +- +- +diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h +index 96735c8e..285eb5e1 100644 +--- a/lib/ext2fs/ext2fs.h ++++ b/lib/ext2fs/ext2fs.h +@@ -199,6 +199,8 @@ typedef struct ext2_file *ext2_file_t; + #define EXT2_FLAG_IGNORE_CSUM_ERRORS 0x200000 + #define EXT2_FLAG_SHARE_DUP 0x400000 + #define EXT2_FLAG_IGNORE_SB_ERRORS 0x800000 ++#define EXT2_FLAG_BBITMAP_TAIL_PROBLEM 0x1000000 ++#define EXT2_FLAG_IBITMAP_TAIL_PROBLEM 0x2000000 + + /* + * Special flag in the ext2 inode i_flag field that means that this is +diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c +index e86bacd5..f1c4188b 100644 +--- a/lib/ext2fs/rw_bitmaps.c ++++ b/lib/ext2fs/rw_bitmaps.c +@@ -195,6 +195,16 @@ static errcode_t mark_uninit_bg_group_blocks(ext2_filsys fs) + return 0; + } + ++static int bitmap_tail_verify(unsigned char *bitmap, int first, int last) ++{ ++ int i; ++ ++ for (i = first; i <= last; i++) ++ if (bitmap[i] != 0xff) ++ return 0; ++ return 1; ++} ++ + static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) + { + dgrp_t i; +@@ -203,6 +213,7 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) + errcode_t retval; + int block_nbytes = EXT2_CLUSTERS_PER_GROUP(fs->super) / 8; + int inode_nbytes = EXT2_INODES_PER_GROUP(fs->super) / 8; ++ int tail_flags = 0; + int csum_flag; + unsigned int cnt; + blk64_t blk; +@@ -315,6 +326,9 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) + EXT2_ET_BLOCK_BITMAP_CSUM_INVALID; + goto cleanup; + } ++ if (!bitmap_tail_verify((unsigned char *) block_bitmap, ++ block_nbytes, fs->blocksize - 1)) ++ tail_flags |= EXT2_FLAG_BBITMAP_TAIL_PROBLEM; + } else + memset(block_bitmap, 0, block_nbytes); + cnt = block_nbytes << 3; +@@ -347,6 +361,9 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) + EXT2_ET_INODE_BITMAP_CSUM_INVALID; + goto cleanup; + } ++ if (!bitmap_tail_verify((unsigned char *) inode_bitmap, ++ inode_nbytes, fs->blocksize - 1)) ++ tail_flags |= EXT2_FLAG_IBITMAP_TAIL_PROBLEM; + } else + memset(inode_bitmap, 0, inode_nbytes); + cnt = inode_nbytes << 3; +@@ -366,10 +383,15 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) + } + + success_cleanup: +- if (inode_bitmap) ++ if (inode_bitmap) { + ext2fs_free_mem(&inode_bitmap); +- if (block_bitmap) ++ fs->flags &= ~EXT2_FLAG_IBITMAP_TAIL_PROBLEM; ++ } ++ if (block_bitmap) { + ext2fs_free_mem(&block_bitmap); ++ fs->flags &= ~EXT2_FLAG_BBITMAP_TAIL_PROBLEM; ++ } ++ fs->flags |= tail_flags; + return 0; + + cleanup: +diff --git a/tests/f_bitmaps/expect.1 b/tests/f_bitmaps/expect.1 +index 715984d4..2e91113d 100644 +--- a/tests/f_bitmaps/expect.1 ++++ b/tests/f_bitmaps/expect.1 +@@ -11,6 +11,8 @@ Fix? yes + Inode bitmap differences: +11 -15 + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/32 files (9.1% non-contiguous), 22/100 blocks +diff --git a/tests/f_dup/expect.1 b/tests/f_dup/expect.1 +index 075e62c1..635a0dfc 100644 +--- a/tests/f_dup/expect.1 ++++ b/tests/f_dup/expect.1 +@@ -30,6 +30,8 @@ Fix? yes + Free blocks count wrong (62, counted=60). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + Padding at end of block bitmap is not set. Fix? yes + + +diff --git a/tests/f_dup2/expect.1 b/tests/f_dup2/expect.1 +index 69aa21b4..04d7304b 100644 +--- a/tests/f_dup2/expect.1 ++++ b/tests/f_dup2/expect.1 +@@ -37,6 +37,8 @@ Fix? yes + Free blocks count wrong (26, counted=22). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + Padding at end of block bitmap is not set. Fix? yes + + +diff --git a/tests/f_dup3/expect.1 b/tests/f_dup3/expect.1 +index eab75a8d..5f79cb89 100644 +--- a/tests/f_dup3/expect.1 ++++ b/tests/f_dup3/expect.1 +@@ -39,6 +39,8 @@ Fix? yes + Free blocks count wrong (20, counted=19). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 16/16 files (25.0% non-contiguous), 81/100 blocks +diff --git a/tests/f_end-bitmap/expect.1 b/tests/f_end-bitmap/expect.1 +index 87e2fd64..85c7e67f 100644 +--- a/tests/f_end-bitmap/expect.1 ++++ b/tests/f_end-bitmap/expect.1 +@@ -8,6 +8,8 @@ Pass 5: Checking group summary information + Free blocks count wrong for group #0 (44, counted=63). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + Padding at end of block bitmap is not set. Fix? yes + + +diff --git a/tests/f_illbbitmap/expect.1 b/tests/f_illbbitmap/expect.1 +index 8746d23a..40996cd6 100644 +--- a/tests/f_illbbitmap/expect.1 ++++ b/tests/f_illbbitmap/expect.1 +@@ -22,6 +22,8 @@ Fix? yes + Inode bitmap differences: -(12--21) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks +diff --git a/tests/f_illibitmap/expect.1 b/tests/f_illibitmap/expect.1 +index 5bae25d1..bf21df7a 100644 +--- a/tests/f_illibitmap/expect.1 ++++ b/tests/f_illibitmap/expect.1 +@@ -19,6 +19,8 @@ Pass 5: Checking group summary information + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks +diff --git a/tests/f_illitable_flexbg/expect.1 b/tests/f_illitable_flexbg/expect.1 +index fa42a0f8..4ac12463 100644 +--- a/tests/f_illitable_flexbg/expect.1 ++++ b/tests/f_illitable_flexbg/expect.1 +@@ -18,6 +18,8 @@ Pass 5: Checking group summary information + Inode bitmap differences: -(65--128) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 12/256 files (0.0% non-contiguous), 31163/32768 blocks +diff --git a/tests/f_lpf/expect.1 b/tests/f_lpf/expect.1 +index 4f2853c5..6ef996bb 100644 +--- a/tests/f_lpf/expect.1 ++++ b/tests/f_lpf/expect.1 +@@ -42,6 +42,8 @@ Fix? yes + Free inodes count wrong (1, counted=0). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 16/16 files (12.5% non-contiguous), 67/100 blocks +diff --git a/tests/f_overfsblks/expect.1 b/tests/f_overfsblks/expect.1 +index e5b93f0d..bc8f2a87 100644 +--- a/tests/f_overfsblks/expect.1 ++++ b/tests/f_overfsblks/expect.1 +@@ -13,6 +13,8 @@ Pass 5: Checking group summary information + Inode bitmap differences: -(12--21) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks +diff --git a/tests/f_super_bad_csum/expect.1 b/tests/f_super_bad_csum/expect.1 +index 25ced5c8..12adee97 100644 +--- a/tests/f_super_bad_csum/expect.1 ++++ b/tests/f_super_bad_csum/expect.1 +@@ -5,8 +5,8 @@ Pass 2: Checking directory structure + Pass 3: Checking directory connectivity + Pass 4: Checking reference counts + Pass 5: Checking group summary information +-Inode bitmap differences: Group 1 inode bitmap does not match checksum. +-FIXED. ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/1024 files (0.0% non-contiguous), 1557/16384 blocks +diff --git a/tests/j_corrupt_ext_jnl_sb_csum/expect b/tests/j_corrupt_ext_jnl_sb_csum/expect +index 70a4fe72..4212a000 100644 +--- a/tests/j_corrupt_ext_jnl_sb_csum/expect ++++ b/tests/j_corrupt_ext_jnl_sb_csum/expect +@@ -12,6 +12,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/128 files (0.0% non-contiguous), 66/2048 blocks +diff --git a/tests/j_ext_long_trans/expect b/tests/j_ext_long_trans/expect +index d379610e..ea3c87fc 100644 +--- a/tests/j_ext_long_trans/expect ++++ b/tests/j_ext_long_trans/expect +@@ -98,6 +98,8 @@ Fix? yes + Free inodes count wrong (16372, counted=16373). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 6228/262144 blocks +diff --git a/tests/j_long_trans/expect b/tests/j_long_trans/expect +index 7a175414..82b3caf1 100644 +--- a/tests/j_long_trans/expect ++++ b/tests/j_long_trans/expect +@@ -96,6 +96,8 @@ Fix? yes + Free inodes count wrong (16372, counted=16373). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + Recreate journal? yes + + Creating journal (8192 blocks): Done. +diff --git a/tests/j_long_trans_mcsum_32bit/expect b/tests/j_long_trans_mcsum_32bit/expect +index a808d9f4..ffae07a6 100644 +--- a/tests/j_long_trans_mcsum_32bit/expect ++++ b/tests/j_long_trans_mcsum_32bit/expect +@@ -135,6 +135,8 @@ Fix? yes + Free inodes count wrong (32756, counted=32757). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + Recreate journal? yes + + Creating journal (16384 blocks): Done. +diff --git a/tests/j_long_trans_mcsum_64bit/expect b/tests/j_long_trans_mcsum_64bit/expect +index 76e109a4..e891def1 100644 +--- a/tests/j_long_trans_mcsum_64bit/expect ++++ b/tests/j_long_trans_mcsum_64bit/expect +@@ -134,6 +134,8 @@ Fix? yes + Free inodes count wrong (32756, counted=32757). + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + Recreate journal? yes + + Creating journal (16384 blocks): Done. +diff --git a/tests/j_recover_csum2_32bit/expect.1 b/tests/j_recover_csum2_32bit/expect.1 +index 491784a2..fdbda36e 100644 +--- a/tests/j_recover_csum2_32bit/expect.1 ++++ b/tests/j_recover_csum2_32bit/expect.1 +@@ -10,6 +10,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/8192 files (0.0% non-contiguous), 7739/131072 blocks +diff --git a/tests/j_recover_csum2_64bit/expect.1 b/tests/j_recover_csum2_64bit/expect.1 +index 491784a2..fdbda36e 100644 +--- a/tests/j_recover_csum2_64bit/expect.1 ++++ b/tests/j_recover_csum2_64bit/expect.1 +@@ -10,6 +10,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/8192 files (0.0% non-contiguous), 7739/131072 blocks +diff --git a/tests/j_short_trans/expect b/tests/j_short_trans/expect +index bcc8fe82..2bd0e506 100644 +--- a/tests/j_short_trans/expect ++++ b/tests/j_short_trans/expect +@@ -32,6 +32,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 5164/65536 blocks +diff --git a/tests/j_short_trans_64bit/expect b/tests/j_short_trans_64bit/expect +index f9971eba..808dc61d 100644 +--- a/tests/j_short_trans_64bit/expect ++++ b/tests/j_short_trans_64bit/expect +@@ -34,6 +34,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 5196/65536 blocks +diff --git a/tests/j_short_trans_mcsum_64bit/expect b/tests/j_short_trans_mcsum_64bit/expect +index d876ff09..d73e2829 100644 +--- a/tests/j_short_trans_mcsum_64bit/expect ++++ b/tests/j_short_trans_mcsum_64bit/expect +@@ -34,6 +34,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/32768 files (0.0% non-contiguous), 6353/131072 blocks +diff --git a/tests/j_short_trans_old_csum/expect b/tests/j_short_trans_old_csum/expect +index 29ac27fb..6cf06d4a 100644 +--- a/tests/j_short_trans_old_csum/expect ++++ b/tests/j_short_trans_old_csum/expect +@@ -34,6 +34,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 5164/65536 blocks +diff --git a/tests/j_short_trans_open_recover/expect b/tests/j_short_trans_open_recover/expect +index be6e363d..3e868197 100644 +--- a/tests/j_short_trans_open_recover/expect ++++ b/tests/j_short_trans_open_recover/expect +@@ -37,6 +37,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 5164/65536 blocks +diff --git a/tests/j_short_trans_recover/expect b/tests/j_short_trans_recover/expect +index 75867337..508858c9 100644 +--- a/tests/j_short_trans_recover/expect ++++ b/tests/j_short_trans_recover/expect +@@ -34,6 +34,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 5164/65536 blocks +diff --git a/tests/j_short_trans_recover_mcsum_64bit/expect b/tests/j_short_trans_recover_mcsum_64bit/expect +index 9cc33097..8c637f12 100644 +--- a/tests/j_short_trans_recover_mcsum_64bit/expect ++++ b/tests/j_short_trans_recover_mcsum_64bit/expect +@@ -36,6 +36,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/32768 files (0.0% non-contiguous), 6353/131072 blocks +diff --git a/tests/t_replay_and_set/expect b/tests/t_replay_and_set/expect +index f63a73af..3e19d92e 100644 +--- a/tests/t_replay_and_set/expect ++++ b/tests/t_replay_and_set/expect +@@ -30,6 +30,8 @@ Fix? yes + Inode bitmap differences: +(1--11) + Fix? yes + ++Padding at end of inode bitmap is not set. Fix? yes ++ + + test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** + test_filesys: 11/16384 files (0.0% non-contiguous), 5164/65536 blocks +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-e2fsck-remove-an-potentially-ambiguous-dangling-else.patch b/SOURCES/e2fsprogs-1.44.6-e2fsck-remove-an-potentially-ambiguous-dangling-else.patch new file mode 100644 index 0000000..1879307 --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-e2fsck-remove-an-potentially-ambiguous-dangling-else.patch @@ -0,0 +1,35 @@ +From 90557d26c6282e8171b422966860eb5594b82eb5 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Fri, 10 May 2019 19:21:03 -0400 +Subject: [PATCH 4/4] e2fsck: remove an potentially ambiguous dangling else + clause + +This doesn't actually fix a bug or change behavior, but it removes a +clang warning. + +Signed-off-by: Theodore Ts'o +--- + e2fsck/pass5.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c +index 81009097..3a5c88da 100644 +--- a/e2fsck/pass5.c ++++ b/e2fsck/pass5.c +@@ -886,11 +886,12 @@ static void check_inode_end(e2fsck_t ctx) + * be written back to disk. + */ + check_intra_bg_tail: +- if (!asked && fs->flags & EXT2_FLAG_IBITMAP_TAIL_PROBLEM) ++ if (!asked && fs->flags & EXT2_FLAG_IBITMAP_TAIL_PROBLEM) { + if (fix_problem(ctx, PR_5_INODE_BMAP_PADDING, &pctx)) + ext2fs_mark_ib_dirty(fs); + else + ext2fs_unmark_valid(fs); ++ } + } + + static void check_block_end(e2fsck_t ctx) +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-e2image-add-b-and-B-options-to-specify-where-to-find.patch b/SOURCES/e2fsprogs-1.44.6-e2image-add-b-and-B-options-to-specify-where-to-find.patch new file mode 100644 index 0000000..6d08490 --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-e2image-add-b-and-B-options-to-specify-where-to-find.patch @@ -0,0 +1,187 @@ +From c86892cb20129e3925fb16c228fb7433332371ce Mon Sep 17 00:00:00 2001 +From: Artem Blagodarenko +Date: Wed, 6 Mar 2019 11:52:13 -0500 +Subject: [PATCH 3/4] e2image: add -b and -B options to specify where to find + the superblock + +e2image has no ability to use superblock backup to copy metadata. +This feature can be useful if someone wants to make partition +image and fix it using e2fsck utility. + +New -b option allows to pass superblock number, like e2fsck utility does. +e2image doesn't change primary superblock and store it as is, so +it can be fixed using e2fsck latter. Option -B allows setting +superblock size. + +Signed-off-by: Artem Blagodarenko +Signed-off-by: Theodore Ts'o +--- + misc/e2image.8.in | 33 +++++++++++++++++++++++++++++++++ + misc/e2image.c | 43 +++++++++++++++++++++++++++++++++++++------ + 2 files changed, 70 insertions(+), 6 deletions(-) + +diff --git a/misc/e2image.8.in b/misc/e2image.8.in +index a7bfdf24..bbbb57ae 100644 +--- a/misc/e2image.8.in ++++ b/misc/e2image.8.in +@@ -12,6 +12,15 @@ e2image \- Save critical ext2/ext3/ext4 filesystem metadata to a file + ] + [ + .B \-f ++.B \-b ++.I superblock ++] ++[ ++.B \-B ++.I blocksize ++] ++[ ++.B \-fr + ] + .I device + .I image-file +@@ -167,6 +176,22 @@ the + option will prevent analysis of problems related to hash-tree indexed + directories. + .PP ++Option ++.B \-b ++.I superblock ++can be used to get image from partition with broken primary superblock. ++The partition is copied as-is including broken primary superblock. ++.PP ++Option ++.B \-B ++.I blocksize ++can be used to set superblock block size. Normally, e2fsck will search ++for the superblock at various different block sizes in an attempt to find ++the appropriate blocksize. This search can be fooled in some cases. This ++option forces e2fsck to only try locating the superblock at a particular ++blocksize. If the superblock is not found, e2fsck will terminate with a ++fatal error. ++.PP + Note that this will work even if you substitute "/dev/hda1" for another raw + disk image, or QCOW2 image previously created by + .BR e2image . +@@ -217,6 +242,14 @@ This can be useful to write a qcow2 image containing all data to a + sparse image file where it can be loop mounted, or to a disk partition. + Note that this may not work with qcow2 images not generated by e2image. + .PP ++Options ++.B \-b ++.I superblock ++and ++.B \-B ++.I blocksize ++can be used same way as for raw images. ++.PP + .SH INCLUDING DATA + Normally + .B e2image +diff --git a/misc/e2image.c b/misc/e2image.c +index 9e21d0db..3c881fee 100644 +--- a/misc/e2image.c ++++ b/misc/e2image.c +@@ -104,7 +104,8 @@ static int get_bits_from_size(size_t size) + + static void usage(void) + { +- fprintf(stderr, _("Usage: %s [ -r|Q ] [ -f ] device image-file\n"), ++ fprintf(stderr, _("Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize]" ++ "[ -fr ] device image-file\n"), + program_name); + fprintf(stderr, _(" %s -I device image-file\n"), program_name); + fprintf(stderr, _(" %s -ra [ -cfnp ] [ -o src_offset ] " +@@ -1267,7 +1268,8 @@ static void output_qcow2_meta_data_blocks(ext2_filsys fs, int fd) + free_qcow2_image(img); + } + +-static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags) ++static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags, ++ blk64_t superblock) + { + struct process_block_struct pb; + struct ext2_inode inode; +@@ -1295,6 +1297,22 @@ static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags) + } + } + ++ if (superblock) { ++ int j; ++ ++ ext2fs_mark_block_bitmap2(meta_block_map, superblock); ++ meta_blocks_count++; ++ ++ /* ++ * Mark the backup superblock descriptors ++ */ ++ for (j = 0; j < fs->desc_blocks; j++) { ++ ext2fs_mark_block_bitmap2(meta_block_map, ++ ext2fs_descriptor_block_loc2(fs, superblock, j)); ++ } ++ meta_blocks_count += fs->desc_blocks; ++ } ++ + mark_table_blocks(fs); + if (show_progress) + fprintf(stderr, "%s", _("Scanning inodes...\n")); +@@ -1474,6 +1492,8 @@ int main (int argc, char ** argv) + int ignore_rw_mount = 0; + int check = 0; + struct stat st; ++ blk64_t superblock = 0; ++ int blocksize = 0; + + #ifdef ENABLE_NLS + setlocale(LC_MESSAGES, ""); +@@ -1487,8 +1507,14 @@ int main (int argc, char ** argv) + if (argc && *argv) + program_name = *argv; + add_error_table(&et_ext2_error_table); +- while ((c = getopt(argc, argv, "nrsIQafo:O:pc")) != EOF) ++ while ((c = getopt(argc, argv, "b:B:nrsIQafo:O:pc")) != EOF) + switch (c) { ++ case 'b': ++ superblock = strtoull(optarg, NULL, 0); ++ break; ++ case 'B': ++ blocksize = strtoul(optarg, NULL, 0); ++ break; + case 'I': + flags |= E2IMAGE_INSTALL_FLAG; + break; +@@ -1540,6 +1566,11 @@ int main (int argc, char ** argv) + "with raw or QCOW2 images.")); + exit(1); + } ++ if (superblock && !img_type) { ++ com_err(program_name, 0, "%s", _("-b option can only be used " ++ "with raw or QCOW2 images.")); ++ exit(1); ++ } + if ((source_offset || dest_offset) && img_type != E2IMAGE_RAW) { + com_err(program_name, 0, "%s", + _("Offsets are only allowed with raw images.")); +@@ -1590,8 +1621,8 @@ int main (int argc, char ** argv) + } + } + sprintf(offset_opt, "offset=%llu", source_offset); +- retval = ext2fs_open2(device_name, offset_opt, open_flag, 0, 0, +- unix_io_manager, &fs); ++ retval = ext2fs_open2(device_name, offset_opt, open_flag, ++ superblock, blocksize, unix_io_manager, &fs); + if (retval) { + com_err (program_name, retval, _("while trying to open %s"), + device_name); +@@ -1681,7 +1712,7 @@ skip_device: + exit(1); + } + if (img_type) +- write_raw_image_file(fs, fd, img_type, flags); ++ write_raw_image_file(fs, fd, img_type, flags, superblock); + else + write_image_file(fs, fd); + +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-libext2fs-add-ext2fs_-read-write-_inode2.patch b/SOURCES/e2fsprogs-1.44.6-libext2fs-add-ext2fs_-read-write-_inode2.patch new file mode 100644 index 0000000..f3b5dfd --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-libext2fs-add-ext2fs_-read-write-_inode2.patch @@ -0,0 +1,162 @@ +From 5fef457767fa876e29a5277e6c7428aa36c9ac61 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Thu, 13 Dec 2018 00:51:51 -0500 +Subject: [PATCH 1/4] libext2fs: add ext2fs_{read,write}_inode2() + +Add new library interface which allows the caller to control whether +the inode checksum should be checked on inode read, or set on inode +write. + +Signed-off-by: Theodore Ts'o +--- + lib/ext2fs/ext2fs.h | 18 +++++++++++++++- + lib/ext2fs/inode.c | 50 +++++++++++++++++++++++++++++---------------- + 2 files changed, 49 insertions(+), 19 deletions(-) + +diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h +index c86596a6..96735c8e 100644 +--- a/lib/ext2fs/ext2fs.h ++++ b/lib/ext2fs/ext2fs.h +@@ -570,6 +570,16 @@ typedef struct ext2_icount *ext2_icount_t; + */ + #define BMAP_RET_UNINIT 0x0001 + ++/* ++ * Flags for ext2fs_read_inode2 ++ */ ++#define READ_INODE_NOCSUM 0x0001 ++ ++/* ++ * Flags for ext2fs_write_inode2 ++ */ ++#define WRITE_INODE_NOCSUM 0x0001 ++ + /* + * Flags for imager.c functions + */ +@@ -1514,13 +1524,19 @@ extern int ext2fs_inode_scan_flags(ext2_inode_scan scan, int set_flags, + extern errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode, + int bufsize); +-extern errcode_t ext2fs_read_inode (ext2_filsys fs, ext2_ino_t ino, ++extern errcode_t ext2fs_read_inode(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode); ++extern errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino, ++ struct ext2_inode * inode, ++ int bufsize, int flags); + extern errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode, + int bufsize); + extern errcode_t ext2fs_write_inode(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode); ++extern errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino, ++ struct ext2_inode * inode, ++ int bufsize, int flags); + extern errcode_t ext2fs_write_new_inode(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode); + extern errcode_t ext2fs_get_blocks(ext2_filsys fs, ext2_ino_t ino, blk_t *blocks); +diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c +index 013c658e..2a4be739 100644 +--- a/lib/ext2fs/inode.c ++++ b/lib/ext2fs/inode.c +@@ -740,8 +740,9 @@ errcode_t ext2fs_get_next_inode(ext2_inode_scan scan, ext2_ino_t *ino, + /* + * Functions to read and write a single inode. + */ +-errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino, +- struct ext2_inode * inode, int bufsize) ++errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino, ++ struct ext2_inode * inode, int bufsize, ++ int flags) + { + blk64_t block_nr; + dgrp_t group; +@@ -850,21 +851,29 @@ errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino, + } + memcpy(inode, iptr, (bufsize > length) ? length : bufsize); + +- if (!(fs->flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) && fail_csum) ++ if (!(fs->flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) && ++ !(flags & READ_INODE_NOCSUM) && fail_csum) + return EXT2_ET_INODE_CSUM_INVALID; + + return 0; + } + ++errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino, ++ struct ext2_inode * inode, int bufsize) ++{ ++ return ext2fs_read_inode2(fs, ino, inode, bufsize, 0); ++} ++ + errcode_t ext2fs_read_inode(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode * inode) + { +- return ext2fs_read_inode_full(fs, ino, inode, +- sizeof(struct ext2_inode)); ++ return ext2fs_read_inode2(fs, ino, inode, ++ sizeof(struct ext2_inode), 0); + } + +-errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, +- struct ext2_inode * inode, int bufsize) ++errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino, ++ struct ext2_inode * inode, int bufsize, ++ int flags) + { + blk64_t block_nr; + dgrp_t group; +@@ -895,12 +904,9 @@ errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, + + if (bufsize < length) { + int old_flags = fs->flags; +- fs->flags |= EXT2_FLAG_IGNORE_CSUM_ERRORS; +- retval = ext2fs_read_inode_full(fs, ino, +- (struct ext2_inode *)w_inode, +- length); +- fs->flags = (old_flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) | +- (fs->flags & ~EXT2_FLAG_IGNORE_CSUM_ERRORS); ++ retval = ext2fs_read_inode2(fs, ino, ++ (struct ext2_inode *)w_inode, ++ length, READ_INODE_NOCSUM); + if (retval) + goto errout; + } +@@ -930,9 +936,11 @@ errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, + ext2fs_swap_inode_full(fs, w_inode, w_inode, 1, length); + #endif + +- retval = ext2fs_inode_csum_set(fs, ino, w_inode); +- if (retval) +- goto errout; ++ if ((flags & WRITE_INODE_NOCSUM) == 0) { ++ retval = ext2fs_inode_csum_set(fs, ino, w_inode); ++ if (retval) ++ goto errout; ++ } + + group = (ino - 1) / EXT2_INODES_PER_GROUP(fs->super); + offset = ((ino - 1) % EXT2_INODES_PER_GROUP(fs->super)) * +@@ -989,11 +997,17 @@ errout: + return retval; + } + ++errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, ++ struct ext2_inode * inode, int bufsize) ++{ ++ return ext2fs_write_inode2(fs, ino, inode, bufsize, 0); ++} ++ + errcode_t ext2fs_write_inode(ext2_filsys fs, ext2_ino_t ino, + struct ext2_inode *inode) + { +- return ext2fs_write_inode_full(fs, ino, inode, +- sizeof(struct ext2_inode)); ++ return ext2fs_write_inode2(fs, ino, inode, ++ sizeof(struct ext2_inode), 0); + } + + /* +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-libext2fs-remove-unused-variable-old_flags.patch b/SOURCES/e2fsprogs-1.44.6-libext2fs-remove-unused-variable-old_flags.patch new file mode 100644 index 0000000..d405da4 --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-libext2fs-remove-unused-variable-old_flags.patch @@ -0,0 +1,28 @@ +From 75fceeee449a3a2ee158fee2a084d383f7360d1e Mon Sep 17 00:00:00 2001 +From: Eric Biggers +Date: Sun, 28 Apr 2019 20:37:45 -0400 +Subject: [PATCH 2/4] libext2fs: remove unused variable 'old_flags' + +In ext2fs_write_inode2(), the 'old_flags' variable is never used. + +Signed-off-by: Eric Biggers +Signed-off-by: Theodore Ts'o +--- + lib/ext2fs/inode.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c +index 2a4be739..75df418d 100644 +--- a/lib/ext2fs/inode.c ++++ b/lib/ext2fs/inode.c +@@ -903,7 +903,6 @@ errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino, + return retval; + + if (bufsize < length) { +- int old_flags = fs->flags; + retval = ext2fs_read_inode2(fs, ino, + (struct ext2_inode *)w_inode, + length, READ_INODE_NOCSUM); +-- +2.20.1 + diff --git a/SOURCES/e2fsprogs-1.44.6-mke2fs-accept-the-english-yes-character-to-the-proce.patch b/SOURCES/e2fsprogs-1.44.6-mke2fs-accept-the-english-yes-character-to-the-proce.patch new file mode 100644 index 0000000..68c83c5 --- /dev/null +++ b/SOURCES/e2fsprogs-1.44.6-mke2fs-accept-the-english-yes-character-to-the-proce.patch @@ -0,0 +1,51 @@ +From 0e1bff5983c675544e79ee9e449e597f397c15b0 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Mon, 27 May 2019 19:36:15 -0400 +Subject: [PATCH] mke2fs: accept the english yes character to the proceed + question + +In some cases if the translation file is missing some translations, +mke2fs can end up printing an English message, e.g.: + +% LANG=it_IT.UTF-8 ./mke2fs /tmp/foo.img 8M +mke2fs 1.45.1 (12-May-2019) +/tmp/foo.img contiene un file system ext4 + created on Mon May 27 19:35:48 2019 +Proceed anyway? (y,N) + +However, if there is a translation for string to match with "yY" +(e.g., to "sS" for Italian), then 'y' won't work. Fix this by falling +back to the english 'yY' characters. + +Addresses-Debian-Bug: #907034 +Signed-off-by: Theodore Ts'o +--- + misc/util.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/misc/util.c b/misc/util.c +index 1d33883d..77991589 100644 +--- a/misc/util.c ++++ b/misc/util.c +@@ -91,6 +91,7 @@ void proceed_question(int delay) + { + char buf[256]; + const char *short_yes = _("yY"); ++ const char *english_yes = "yY"; + + fflush(stdout); + fflush(stderr); +@@ -108,7 +109,9 @@ void proceed_question(int delay) + fputs(_("Proceed anyway? (y,N) "), stdout); + buf[0] = 0; + if (!fgets(buf, sizeof(buf), stdin) || +- strchr(short_yes, buf[0]) == 0) { ++ strchr(_("nN"), buf[0]) || ++ !(strchr(short_yes, buf[0]) || ++ strchr(english_yes, buf[0]))) { + putc('\n', stdout); + exit(1); + } +-- +2.20.1 + diff --git a/SPECS/e2fsprogs.spec b/SPECS/e2fsprogs.spec new file mode 100644 index 0000000..b393ae5 --- /dev/null +++ b/SPECS/e2fsprogs.spec @@ -0,0 +1,1006 @@ +Summary: Utilities for managing ext2, ext3, and ext4 file systems +Name: e2fsprogs +Version: 1.44.6 +Release: 3%{?dist} + +# License tags based on COPYING file distinctions for various components +License: GPLv2 +Group: System Environment/Base +Source0: https://www.kernel.org/pub/linux/kernel/people/tytso/%{name}/v%{version}/%{name}-%{version}.tar.xz + +Url: http://e2fsprogs.sourceforge.net/ +Requires: e2fsprogs-libs%{?_isa} = %{version}-%{release} +Requires: libcom_err%{?_isa} = %{version}-%{release} +Requires: libss = %{version}-%{release} + +# e4fsprogs was a parallel ext4-capable package in RHEL5.x +%if 0%{?rhel} > 0 +Obsoletes: e4fsprogs < %{version}-%{release} +Provides: e4fsprogs = %{version}-%{release} +%endif + +BuildRequires: pkgconfig, texinfo, libselinux-devel, gcc +BuildRequires: fuse-devel +BuildRequires: libsepol-devel +BuildRequires: libblkid-devel +BuildRequires: libuuid-devel +BuildRequires: gettext +BuildRequires: multilib-rpm-config + +Patch0: e2fsprogs-1.44.6-libext2fs-add-ext2fs_-read-write-_inode2.patch +Patch1: e2fsprogs-1.44.6-debugfs-fix-set_inode_field-so-it-can-set-the-checks.patch +Patch2: e2fsprogs-1.44.6-e2image-add-b-and-B-options-to-specify-where-to-find.patch +Patch3: e2fsprogs-1.44.6-debugfs-fix-printing-of-xattrs-with-ea_in_inode-valu.patch +Patch4: e2fsprogs-1.44.6-debugfs-remove-unused-variable-tmp_inode.patch +Patch5: e2fsprogs-1.44.6-libext2fs-remove-unused-variable-old_flags.patch +Patch6: e2fsprogs-1.44.6-e2fsck-check-and-fix-tails-of-all-bitmap-blocks.patch +Patch7: e2fsprogs-1.44.6-e2fsck-remove-an-potentially-ambiguous-dangling-else.patch +Patch8: e2fsprogs-1.44.6-mke2fs-accept-the-english-yes-character-to-the-proce.patch + +%description +The e2fsprogs package contains a number of utilities for creating, +checking, modifying, and correcting any inconsistencies in second, +third and fourth extended (ext2/ext3/ext4) file systems. E2fsprogs +contains e2fsck (used to repair file system inconsistencies after an +unclean shutdown), mke2fs (used to initialize a partition to contain +an empty ext2 file system), debugfs (used to examine the internal +structure of a file system, to manually repair a corrupted +file system, or to create test cases for e2fsck), tune2fs (used to +modify file system parameters), and most of the other core ext2fs +file system utilities. + +You should install the e2fsprogs package if you need to manage the +performance of an ext2, ext3, or ext4 file system. + +%package libs +Summary: Ext2/3/4 file system specific shared libraries +Group: Development/Libraries +License: GPLv2 and LGPLv2 +Requires: libcom_err%{?_isa} = %{version}-%{release} + +%description libs +E2fsprogs-libs contains libe2p and libext2fs, the libraries of the +e2fsprogs package. + +These libraries are used to directly access ext2/3/4 file systems +from user space. + +%package static +Summary: Ext2/3/4 file system specific static libraries +Group: Development/Libraries +License: GPLv2 and LGPLv2 + +%description static +E2fsprogs-static contains all static libraries built from e2fsprogs, +including libext2fs, libcom_err, libe2p, and libss. + +These libraries are used to directly access ext2/3/4 file systems +from user space, and perform other useful functions. + +%package devel +Summary: Ext2/3/4 file system specific libraries and headers +Group: Development/Libraries +License: GPLv2 and LGPLv2 +Requires: e2fsprogs-libs%{?_isa} = %{version}-%{release} +Requires: libcom_err-devel%{?_isa} = %{version}-%{release} +Requires: gawk +Requires: pkgconfig +Requires(post): info +Requires(preun): info + +%description devel +E2fsprogs-devel contains the libraries and header files needed to +develop second, third and fourth extended (ext2/ext3/ext4) +file system specific programs. + +You should install e2fsprogs-devel if you want to develop ext2/3/4 +file system specific programs. If you install e2fsprogs-devel, you'll +also want to install e2fsprogs. + +%package -n libcom_err +Summary: Common error description library +Group: Development/Libraries +License: MIT + +%description -n libcom_err +This is the common error description library, part of e2fsprogs. + +libcom_err is an attempt to present a common error-handling mechanism. + +%package -n libcom_err-devel +Summary: Common error description library +Group: Development/Libraries +License: MIT +Requires: libcom_err%{?_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libcom_err-devel +This is the common error description development library and headers, +part of e2fsprogs. It contains the compile_et command, used +to convert a table listing error-code names and associated messages +messages into a C source file suitable for use with the library. + +libcom_err is an attempt to present a common error-handling mechanism. + +%package -n libss +Summary: Command line interface parsing library +Group: Development/Libraries +License: MIT +Requires: libcom_err%{?_isa} = %{version}-%{release} + +%description -n libss +This is libss, a command line interface parsing library, part of e2fsprogs. + +This package includes a tool that parses a command table to generate +a simple command-line interface parser, the include files needed to +compile and use it. + +It was originally inspired by the Multics SubSystem library. + +%package -n libss-devel +Summary: Command line interface parsing library +Group: Development/Libraries +License: MIT +Requires: libss%{?_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n libss-devel +This is the command line interface parsing (libss) development library +and headers, part of e2fsprogs. It contains the mk_cmds command, which +parses a command table to generate a simple command-line interface parser. + +It was originally inspired by the Multics SubSystem library. + +%prep +%setup -q + +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 + +%build +%configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \ + --enable-elf-shlibs --enable-nls --disable-uuidd --disable-fsck \ + --disable-e2initrd-helper --disable-libblkid --disable-libuuid \ + --enable-quota --with-root-prefix=/usr +make V=1 %{?_smp_mflags} + +%install +rm -rf %{buildroot} +export PATH=/sbin:$PATH +make install install-libs DESTDIR=%{buildroot} INSTALL="%{__install} -p" \ + root_sbindir=%{_sbindir} root_libdir=%{_libdir} + +# Replace arch-dependent header file with arch-independent stub (when needed). +%multilib_fix_c_header --file %{_includedir}/ext2fs/ext2_types.h + +# Hack for now, otherwise strip fails. +chmod +w %{buildroot}%{_libdir}/*.a + +%find_lang %{name} + +%check +make fullcheck + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%post devel +# Test for file; if installed with --excludedocs it may not be there +if [ -f %{_infodir}/libext2fs.info.gz ]; then + /sbin/install-info %{_infodir}/libext2fs.info.gz %{_infodir}/dir || : +fi + +%preun devel +if [ $1 = 0 -a -f %{_infodir}/libext2fs.info.gz ]; then + /sbin/install-info --delete %{_infodir}/libext2fs.info.gz %{_infodir}/dir || : +fi +exit 0 + +%post -n libcom_err -p /sbin/ldconfig +%postun -n libcom_err -p /sbin/ldconfig + +%post -n libss -p /sbin/ldconfig +%postun -n libss -p /sbin/ldconfig + +%files -f %{name}.lang +%doc README +%{!?_licensedir:%global license %%doc} + +%config(noreplace) /etc/mke2fs.conf +%{_sbindir}/badblocks +%{_sbindir}/debugfs +%{_sbindir}/dumpe2fs +%{_sbindir}/e2fsck +%{_sbindir}/e2image +%{_sbindir}/e2label +%{_sbindir}/e2mmpstatus +%{_sbindir}/e2undo +%{_sbindir}/e4crypt +%{_sbindir}/fsck.ext2 +%{_sbindir}/fsck.ext3 +%{_sbindir}/fsck.ext4 +%{_sbindir}/fuse2fs +%{_sbindir}/logsave +%{_sbindir}/mke2fs +%{_sbindir}/mkfs.ext2 +%{_sbindir}/mkfs.ext3 +%{_sbindir}/mkfs.ext4 +%{_sbindir}/resize2fs +%{_sbindir}/tune2fs +%{_sbindir}/filefrag +%{_sbindir}/e2freefrag +%{_sbindir}/e4defrag +%{_sbindir}/mklost+found + +%{_bindir}/chattr +%{_bindir}/lsattr +%{_mandir}/man1/chattr.1* +%{_mandir}/man1/fuse2fs.1* +%{_mandir}/man1/lsattr.1* + +%{_mandir}/man5/ext2.5* +%{_mandir}/man5/ext3.5* +%{_mandir}/man5/ext4.5* +%{_mandir}/man5/e2fsck.conf.5* +%{_mandir}/man5/mke2fs.conf.5* + +%{_mandir}/man8/badblocks.8* +%{_mandir}/man8/debugfs.8* +%{_mandir}/man8/dumpe2fs.8* +%{_mandir}/man8/e2fsck.8* +%{_mandir}/man8/e4crypt.8* +%{_mandir}/man8/filefrag.8* +%{_mandir}/man8/e2freefrag.8* +%{_mandir}/man8/e4defrag.8* +%{_mandir}/man8/fsck.ext2.8* +%{_mandir}/man8/fsck.ext3.8* +%{_mandir}/man8/fsck.ext4.8* +%{_mandir}/man8/e2image.8* +%{_mandir}/man8/e2label.8* +%{_mandir}/man8/e2mmpstatus.8* +%{_mandir}/man8/e2undo.8* +%{_mandir}/man8/logsave.8* +%{_mandir}/man8/mke2fs.8* +%{_mandir}/man8/mkfs.ext2.8* +%{_mandir}/man8/mkfs.ext3.8* +%{_mandir}/man8/mkfs.ext4.8* +%{_mandir}/man8/mklost+found.8* +%{_mandir}/man8/resize2fs.8* +%{_mandir}/man8/tune2fs.8* + +%files libs +%{!?_licensedir:%global license %%doc} +%license NOTICE +%{_libdir}/libe2p.so.* +%{_libdir}/libext2fs.so.* + +%files static +%{!?_licensedir:%global license %%doc} +%license NOTICE +%{_libdir}/*.a + +%files devel +%{_infodir}/libext2fs.info* +%{_libdir}/libe2p.so +%{_libdir}/libext2fs.so +%{_libdir}/pkgconfig/e2p.pc +%{_libdir}/pkgconfig/ext2fs.pc + +%{_includedir}/e2p +%{_includedir}/ext2fs + +%files -n libcom_err +%{!?_licensedir:%global license %%doc} +%license NOTICE +%{_libdir}/libcom_err.so.* + +%files -n libcom_err-devel +%{_bindir}/compile_et +%{_libdir}/libcom_err.so +%{_datadir}/et +%{_includedir}/et +%{_includedir}/com_err.h +%{_mandir}/man1/compile_et.1* +%{_mandir}/man3/com_err.3* +%{_libdir}/pkgconfig/com_err.pc + +%files -n libss +%{!?_licensedir:%global license %%doc} +%license NOTICE +%{_libdir}/libss.so.* + +%files -n libss-devel +%{_bindir}/mk_cmds +%{_libdir}/libss.so +%{_datadir}/ss +%{_includedir}/ss +%{_mandir}/man1/mk_cmds.1* +%{_libdir}/pkgconfig/ss.pc + +%changelog +* Wed May 29 2019 Lukas Czerner 1.44.6-3 +- Backport fixes from 1.45.2 (#1714927) +- Fix errors in rpmdiff (#1714923) + +* Wed May 15 2019 Lukas Czerner 1.44.6-2 +- Backport fixes from 1.45.1 + +* Tue Apr 2 2019 Lukas Czerner 1.44.6-1 +- Rebase to the release 1.44.6 (#1695147) +- Backport fixes from 1.45.0 +- Add gating.yaml (#1679654) + +* Fri Dec 14 2018 Lukas Czerner 1.44.3-2 +- Backport fixes from upstream version 1.44.4 (#1659526) + +* Wed Jul 18 2018 Lukas Czerner 1.44.3-1 +- New upstream release + +* Wed Feb 07 2018 Fedora Release Engineering - 1.43.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 9 2018 Lukas Czerner 1.43.8-1 +- New upstream release +- Fix build failure swapfs.c on big-endian + +* Wed Oct 18 2017 Eric Sandeen 1.43.7-1 +- New upstream release + +* Wed Aug 30 2017 Eric Sandeen 1.43.6-1 +- New upstream release + +* Fri Aug 11 2017 Kalev Lember 1.43.5-2 +- Bump and rebuild for an rpm signing issue + +* Tue Aug 08 2017 Eric Sandeen 1.43.5-1 +- New upstream release + +* Wed Aug 02 2017 Fedora Release Engineering - 1.43.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.43.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Feb 01 2017 Stephen Gallagher - 1.43.4-2 +- Add missing %%license macro + +* Tue Jan 31 2017 Eric Sandeen 1.43.4-1 +- New upstream release + +* Mon Sep 05 2016 Eric Sandeen 1.43.3-1 +- New upstream release + +* Mon Sep 05 2016 Eric Sandeen 1.43.2-1 +- New upstream release (broken on i686, not built) + +* Thu Jun 16 2016 Eric Sandeen 1.43.1-2 +- Fix e2undo endian issues (#1344636) + +* Wed Jun 08 2016 Eric Sandeen 1.43.1-1 +- New upstream release + +* Wed Feb 03 2016 Fedora Release Engineering - 1.42.13-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 1.42.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jun 08 2015 Eric Sandeen 1.42.13-2 +- Add -fno-strict-aliasing (#1211582) + +* Mon May 18 2015 Eric Sandeen 1.42.13-1 +- New upstream release + +* Thu Apr 30 2015 Eric Sandeen 1.42.12-5 +- Don't trigger full check within time fudge window (#1202024) + +* Tue Feb 24 2015 Eric Sandeen 1.42.12-4 +- Fix potential buffer overflow in closefs (#1193947, CVE-2015-1572) +- Fix dumpe2fs segfault with no arguments (#1194063) +- Don't require fsck prior to resize2fs -P (#1170803) + +* Sat Feb 21 2015 Till Maas - 1.42.12-3 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Tue Feb 17 2015 Eric Sandeen 1.42.12-2 +- Fix use after free (#1192861) +- Fix time-based fsck if set in superblock (e2fsck.conf, #963283) + +* Fri Aug 29 2014 Eric Sandeen 1.42.12-1 +- New upstream release + +* Sat Aug 16 2014 Fedora Release Engineering - 1.42.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jul 12 2014 Tom Callaway 1.42.11-2 +- fix license handling + +* Fri Jul 11 2014 Eric Sandeen 1.42.11-1 +- New upstream release + +* Tue Jul 01 2014 Dan Horák - 1.42.10-5 +- Rebuilt for buggy rpm 4.12 alpha - + https://lists.fedoraproject.org/pipermail/devel/2014-June/200633.html + +* Mon Jun 30 2014 Dan Horák - 1.42.10-4 +- Add missing dependency info for quota.c - fixes build on s390(x) + +* Sat Jun 07 2014 Fedora Release Engineering - 1.42.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 21 2014 Eric Sandeen 1.42.10-2 +- Fix large file handling on 32-bit builds + +* Mon May 19 2014 Eric Sandeen 1.42.10-1 +- New upstream release +- Enable userspace quota + +* Mon Jan 20 2014 Eric Sandeen 1.42.9-2 +- Fix up Source0 URL + +* Thu Jan 02 2014 Eric Sandeen 1.42.9-1 +- New upstream release +- Re-enable disabled tests for now + +* Sat Aug 03 2013 Fedora Release Engineering - 1.42.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 22 2013 Eric Sandeen 1.42.8-2 +- Interpackage dependencies should be for same arch +- Remove newly added but failing resize2fs tests for now + +* Wed Jun 26 2013 Eric Sandeen 1.42.8-1 +- New upstream release + +* Tue Jan 29 2013 Eric Sandeen 1.42.7-2 +- Tighten up inter-package dependencies + +* Tue Jan 22 2013 Eric Sandeen 1.42.7-1 +- New upstream release + +* Tue Oct 02 2012 Eric Sandeen 1.42.6-2 +- Switch back to gzipped tarball to make sf.net source URL correct + +* Tue Oct 02 2012 Eric Sandeen 1.42.6-1 +- New upstream release + +* Thu Aug 16 2012 Eric Sandeen 1.42.5-2 +- Add explicit library deps to e2fsprogs (#848805) + +* Mon Jul 30 2012 Eric Sandeen 1.42.5-1 +- New upstream release + +* Wed Jul 18 2012 Fedora Release Engineering - 1.42.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jun 12 2012 Eric Sandeen 1.42.4-1 +- New upstream release + +* Thu May 31 2012 Eric Sandeen 1.42.3-2 +- Fixes for > 16T filesystems + +* Mon May 14 2012 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 + +* Fri Apr 20 2012 Eric Sandeen 1.42.2-5 +- Add broken system clock config to e2fsck.conf to let boot + continue even if system clock very wrong. + +* Mon Apr 09 2012 Eric Sandeen 1.42.2-4 +- Handle 32-bit bitmaps in new find_first_zero functions + +* Fri Mar 30 2012 Richard W.M. Jones 1.42.2-3 +- Rebuild against new RPM (RHBZ#808250). + +* Wed Mar 28 2012 Eric Sandeen 1.42.2-2 +- Move files out of /sbin and /lib into /usr/... + +* Tue Mar 27 2012 Eric Sandeen 1.42.2-1 +- New upstream release + +* Mon Feb 20 2012 Eric Sandeen 1.42.1-1 +- New upstream release + +* Fri Jan 13 2012 Fedora Release Engineering - 1.42-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Nov 29 2011 Eric Sandeen 1.42-1 +- New upstream point release + +* Mon Nov 21 2011 Eric Sandeen 1.42-0.9.WIP.1120 +- Build the right tarball for 1.42-WIP-1120 + +* Mon Nov 21 2011 Eric Sandeen 1.42-0.8.WIP.1120 +- New upstream snapshot release + +* Thu Nov 10 2011 Eric Sandeen 1.42-0.7.WIP.1016 +- Several mmp-related fixes + +* Tue Nov 08 2011 Eric Sandeen 1.42-0.6.WIP.1016 +- Fix e2fsck / make check on big endian arch + +* Mon Oct 17 2011 Eric Sandeen 1.42-0.5.WIP.1016 +- New upstream snapshot release + +* Mon Oct 10 2011 Eric Sandeen 1.42-0.4.WIP.2011.1009 +- New upstream snapshot release + +* Mon Sep 26 2011 Eric Sandeen 1.42-0.3.WIP.0925 +- New upstream snapshot release + +* Tue Aug 09 2011 Eric Sandeen 1.42-0.2.WIP.0702 +- Fix use of uninitialized memory via ext2fs_copy_generic_bmap() + +* Tue Aug 09 2011 Eric Sandeen 1.42-0.1.WIP.0702 +- Test release for >16T support + +* Tue Feb 08 2011 Fedora Release Engineering - 1.41.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Dec 23 2010 Eric Sandeen 1.41.14-1 +- New upstream release + +* Wed Dec 22 2010 Dan Horák 1.41.13-2 +- Add upstream fix for big-endian machines + +* Mon Dec 20 2010 Eric Sandeen 1.41.13-1 +- New upstream release + +* Tue Dec 07 2010 Eric Sandeen 1.41.12-7 +- Fix up UTF-8 formatting in e2fsck output (#655227) + +* Wed Oct 06 2010 Eric Sandeen 1.41.12-6 +- Install e4defrag for testing + +* Tue Jul 13 2010 Eric Sandeen 1.41.12-5 +- Relax fsck requirements for resize2fs -P + +* Mon Jul 12 2010 Eric Sandeen 1.41.12-4 +- Add COPYING file to the static subpackage + +* Wed Jun 02 2010 Eric Sandeen 1.41.12-3 +- Reinstate static libs in dedicated package (#596377) + +* Wed May 19 2010 Eric Sandeen 1.41.12-2 +- Fix fsck thinko in 1.41.12 release + +* Mon May 17 2010 Eric Sandeen 1.41.12-1 +- New upstream version + +* Mon Mar 15 2010 Eric Sandeen 1.41.11-1 +- New upstream version + +* Mon Mar 01 2010 Eric Sandeen 1.41.10-5 +- Don't ask for confirmation of misaligned mkfs with -F (#569021) + +* Tue Feb 23 2010 Eric Sandeen 1.41.10-4 +- Fix for e2fsck -fD corruption + +* Fri Feb 12 2010 Eric Sandeen 1.41.10-3 +- And drop virtual provides for static libs + +* Fri Feb 12 2010 Eric Sandeen 1.41.10-2 +- Drop static libs (#545144) + +* Wed Feb 10 2010 Eric Sandeen 1.41.10-1 +- New upstream version + +* Sun Feb 07 2010 Eric Sandeen 1.41.9-10 +- Upstream version of resize2fs array fix, original was wrong + +* Sat Jan 23 2010 Eric Sandeen 1.41.9-9 +- Fix up stray output & re-enable make check +- Fix dlopen issues for newer libreadline +- Fix access beyond end of array in resize2fs + +* Tue Nov 10 2009 Eric Sandeen 1.41.9-8 +- Fix up topology patch to build w/ new util-linux-ng +- Fix endian swapping of backup journal blocks in sb + +* Tue Nov 10 2009 Eric Sandeen 1.41.9-7 +- Re-enable "make check" during build + +* Wed Oct 28 2009 Eric Sandeen 1.41.9-6 +- Add support for block discard (TRIM) at mkfs time +- Add support for new blkid topology awareness + +* Mon Oct 19 2009 Eric Sandeen 1.41.9-5 +- Allow superblock timestamp differences up to 24h (#522969) + +* Tue Oct 06 2009 Eric Sandeen 1.41.9-4 +- Fix install with --excludedocs (#515987) + +* Mon Sep 14 2009 Eric Sandeen 1.41.9-3 +- Drop defrag bits for now, not ready yet. + +* Thu Sep 10 2009 Josef Bacik 1.41.9-2 +- Fix resize -m bug with flexbg (#519131) + +* Sun Aug 23 2009 Eric Sandeen 1.41.9-1 +- New upstream release + +* Thu Aug 06 2009 Eric Sandeen 1.41.8-6 +- Fix filefrag in fallback case +- Add e2freefrag & e4defrag (experimental) + +* Sun Jul 26 2009 Karel Zak 1.41.8-5 +- disable fsck (replaced by util-linux-ng) + +* Sat Jul 25 2009 Karel Zak 1.41.8-4 +- disable libuuid and uuidd (replaced by util-linux-ng) + +* Fri Jul 24 2009 Fedora Release Engineering - 1.41.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jul 17 2009 Eric Sandeen 1.41.8-2 +- Address some package review concerns (#225714) + +* Sun Jul 12 2009 Eric Sandeen 1.41.8-1 +- New upstream version, several resize fixes. + +* Tue Jun 30 2009 Eric Sandeen 1.41.7-1 +- New upstream version + +* Fri Jun 26 2009 Eric Sandeen 1.41.6-6 +- Split out sub-libraries (#225406) +- Don't start uuidd by default + +* Thu Jun 18 2009 Eric Sandeen 1.41.6-5 +- Update journal backup blocks in sb after resize (#505339) +- Fix memory leak in extent handling functions +- Fix bug in inode writing in extent code, clobbered i_extra_isize etc + +* Mon Jun 8 2009 Karel Zak 1.41.6-4 +- set BuildRequires: libblkid-devel (from util-linux-ng) + +* Mon Jun 8 2009 Karel Zak 1.41.6-3 +- temporary use BuildRequires: e2fsprogs-devel (we cannot install + new util-linux-ng with libblkid to buildroots without new e2fsprogs + without libblkid). + +* Thu Jun 4 2009 Karel Zak 1.41.6-2 +- disable libblkid (replaced by libblkid from util-linux-ng) + +* Sat May 30 2009 Eric Sandeen 1.41.6-1 +- New upstream version + +* Fri Apr 24 2009 Eric Sandeen 1.41.5-1 +- New upstream version + +* Wed Apr 22 2009 Eric Sandeen 1.41.4-8 +- Fix support for external journals + +* Wed Apr 22 2009 Eric Sandeen 1.41.4-7 +- Fix ext4 resize issues (#496982) + +* Sat Apr 11 2009 Eric Sandeen 1.41.4-6 +- ignore differing NEEDS_RECOVERY flag on fsck post-resize (#471925) + +* Thu Feb 26 2009 Eric Sandeen 1.41.4-5 +- fix a couple missed descriptions; obsolete e4fsprogs + +* Thu Feb 26 2009 Eric Sandeen 1.41.4-4 +- Edit summary & description to include ext4 (#487469) +- Fix blkid null ptr deref in initrd (#486997) + +* Tue Feb 24 2009 Fedora Release Engineering - 1.41.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Jan 29 2009 Eric Sandeen 1.41.4-2 +- Fix debugfs "stat" segfault if no open fs (#482894) +- Fix name of libext2fs info page (#481620) + +* Thu Jan 29 2009 Eric Sandeen 1.41.4-1 +- New upstream release +- Dropped btrfs & resize fixes, upstream now + +* Tue Jan 20 2009 Eric Sandeen 1.41.3-4 +- resize2fs fixes, esp. for ext4 + +* Sat Jan 10 2009 Eric Sandeen 1.41.3-3 +- Remove conservative "don't change journal location" patch for F11 +- Add btrfs recognition to blkid + +* Fri Nov 07 2008 Eric Sandeen 1.41.3-2 +- Bump to revision 2, f10 was behind f9, oops. + +* Mon Oct 13 2008 Eric Sandeen 1.41.3-1 +- New upstream version (very minor fixes, ext4-related) + +* Thu Oct 02 2008 Eric Sandeen 1.41.2-2 +- Fix blkid to recognize ext4dev filesystems as ext4-mountable + +* Thu Oct 02 2008 Eric Sandeen 1.41.2-1 +- New upstream version +- Updated default dir hash (half_md4) for better perf & fewer collisions +- Fixed ext4 online resizing with flex_bg +- ext4 journal now in extents format and in middle of filesystem +- fix unreadable e2image files +- fix file descriptor leak in libcom_err (#464689) + +* Sat Aug 23 2008 Eric Sandeen 1.41.0-2 +- Don't check the group checksum when !GDT_CSUM (#459875) + +* Thu Jul 10 2008 Eric Sandeen 1.41.0-1 +- New upstream version +- ext4 capable + +* Mon Jul 07 2008 Eric Sandeen 1.41-0.2.WIP.0707 +- Fix release macro snafu + +* Mon Jul 07 2008 Eric Sandeen 1.41-0.1.WIP.0707 +- New upstream snapshot release + +* Fri Jun 20 2008 Eric Sandeen 1.41-0.WIP.0617.1 +- Fix blkid -g segfault when clearing entries (#452333) + +* Wed Jun 18 2008 Eric Sandeen 1.41-0.WIP.0617 +- New upstream snapshot release for ext4 capability + +* Wed Jun 04 2008 Eric Sandeen 1.40.10-3 +- Tidy up multilib hack for non-multilib arches (#446016) +- Fix up postun script (#449868) + +* Wed Jun 04 2008 Dennis Gilmore 1.40.10-2 +- setup header support for sparc + +* Fri May 23 2008 Eric Sandeen 1.40.10-1 +- New upstream version +- Fixes unprivileged blkid use problem (#448591) + +* Mon May 12 2008 Eric Sandeen 1.40.9-2 +- Fix blkid swap recognition on big-endian boxes (#445786) + +* Sun Apr 27 2008 Eric Sandeen 1.40.9-1 +- New upstream version + +* Fri Mar 14 2008 Eric Sandeen 1.40.8-2 +- Update ext2fs_swap_inode_full() fix to match upstream +- Check more of swapv1 header in blkid detection (#442937) + +* Fri Mar 14 2008 Eric Sandeen 1.40.8-1 +- New upstream version + +* Mon Mar 03 2008 Eric Sandeen 1.40.7-2 +- second try at fixing resize2fs vs. large inodes... (#434893) + +* Fri Feb 29 2008 Eric Sandeen 1.40.7-1 +- New upstream version, special leap-day edition +- Fix resize2fs losing inline xattrs when shrinking (#434893) + and add patch to fix swap_inode_full in this case +- Allow mke2fs & tune2fs to manipulate large_file feature (#258381) +- Handle lvm error conditions in libblkid (#433857) +- Allow tune2fs to clear the resize_inode feature (#167816) +- Teach blkid to detect LVM2 physical volumes (#409321) +- Show "mostly printable" xattrs as text in debugfs (#430621) +- Trimmed pre-1.38 rpm changelog entries + +* Sun Feb 10 2008 Eric Sandeen 1.40.6-1 +- New upstream version + +* Fri Feb 08 2008 Eric Sandeen 1.40.5-2 +- gcc-4.3 rebuild + +* Mon Jan 28 2008 Eric Sandeen 1.40.5-1 +- New upstream version, drop several now-upstream patches. + +* Thu Jan 24 2008 Eric Sandeen 1.40.4-7 +- Fix sb flag comparisons properly this time (#428893) +- Make 256-byte inodes for the [default] mkfs case. + This will facilitate upgrades to ext4 later, and help xattr perf. + +* Wed Jan 23 2008 Eric Sandeen 1.40.4-6 +- Completely clobber e2fsck.static build. + +* Wed Jan 23 2008 Eric Sandeen 1.40.4-5 +- Ignore some primary/backup superblock flag differences (#428893) +- Teach libblkid about ext4dev. + +* Tue Jan 15 2008 Eric Sandeen 1.40.4-4 +- Build e2fsck as a dynamically linked binary. +- Re-fix uidd manpage default paths. + +* Mon Jan 14 2008 Eric Sandeen 1.40.4-3 +- New uuidd subpackage, and properly set up uuidd at install. + +* Tue Jan 01 2008 Eric Sandeen 1.40.4-2 +- Add new uidd files to specfile + +* Tue Jan 01 2008 Eric Sandeen 1.40.4-1 +- New upstream version, drop several now-upstream patches. + +* Tue Jan 01 2008 Eric Sandeen 1.40.2-15 +- Drop resize_inode removal patch from tune2fs; ostensibly was + for old kernels which could not mount, but seems to be fine. +- Drop pottcdate removal patch, and don't rebuild .po files, + causes multilib problems and we generally shouldn't rebuild. +- Drop multilib patch; wrapper header should take care of this now. +- Drop ->open rename, Fedora seems ok with this now. + +* Tue Dec 11 2007 Eric Sandeen 1.40.2-14 +- Fix integer overflows (#414591 / CVE-2007-5497) + +* Tue Dec 4 2007 Stepan Kasal 1.40.2-13 +- The -devel package now requires device-mapper-devel, to match + the dependency in blkid.pc (#410791) + +* Tue Nov 27 2007 Eric Sandeen 1.40.2-12 +- Use upstream patch for blkid fat detection, avoids div-by-zero + when encountering some BSD partitions (#398281) + +* Tue Oct 23 2007 Eric Sandeen 1.40.2-11 +- Add arm to multilib header wrapper + +* Sat Oct 20 2007 Eric Sandeen 1.40.2-10 +- Make (more) file timestamps match those in tarball for multilib tidiness +- Fix e2fsprogs-libs summary (shared libs not static) + +* Mon Oct 15 2007 Eric Sandeen 1.40.2-9 +- Detect big-endian squashfs filesystems in libblkid (#305151) + +* Tue Oct 02 2007 Eric Sandeen 1.40.2-8 +- Detect squashfs filesystems in libblkid (#305151) + +* Tue Sep 18 2007 Eric Sandeen 1.40.2-7 +- Fix blkid fat probe when there is a real MBR (#290951) + +* Tue Sep 18 2007 Oliver Falk 1.40.2-6 +- Add alpha to the header wrappers + +* Fri Sep 07 2007 Eric Sandeen 1.40.2-5 +- wrap a couple headers to fix multilib issues (#270441) + +* Wed Aug 29 2007 Eric Sandeen 1.40.2-4 +- add gawk to e2fsprogs-devel Requires, compile_et needs it (#265961) + +* Thu Aug 23 2007 Eric Sandeen 1.40.2-3 +- Update license tags +- Fix one open-create caller with no mode +- Protect ->open ops from glibc open-create-mode-checker +- Fix source URL +- Add gawk to BuildRequires + +* Wed Jul 18 2007 Eric Sandeen 1.40.2-2 +- Fix bug in ext2fs_swap_inode_full() on big-endian boxes + +* Tue Jul 17 2007 Eric Sandeen 1.40.2-1 +- New version 1.40.2 +- Fix up warning in badblocks + +* Mon Jun 25 2007 Eric Sandeen 1.39-15 +- Fix up .po files to remove timestamps; multilib issues (#245653) + +* Fri Jun 22 2007 Eric Sandeen 1.39-14 +- Many coverity-found potential leaks, segfaults, etc (#239354) +- Fix debugfs segfaults when no fs open (#208416, #209330) +- Avoid recursive loops in logdump due to symlinks in /dev (#210371) +- Don't write changes to the backup superblocks by default (#229561) +- Correct byteswapping for fast symlinks with xattrs (#232663) +- e2fsck: added sanity check for xattr validation (#230193) + +* Wed Jun 20 2007 Eric Sandeen 1.39-13 +- add dist tag to release field + +* Wed Jun 20 2007 Eric Sandeen 1.39-12 +- add LUKS support to libblkid (#242421) + +* Fri Feb 23 2007 Karsten Hopp 1.39-11 +- fix post/preun requirements +- use smp flags + +* Mon Feb 05 2007 Alasdair Kergon - 1.39-10 +- Add build dependency on new device-mapper-devel package. + +* Mon Dec 25 2006 Thomas Woerner - 1.39-9 +- build fixes for new automake 1.10 (#220715) + +* Mon Dec 18 2006 Thomas Woerner - 1.39-8 +- make uuid_generate_time generate unique uuids (#218606) + +* Wed Sep 20 2006 Jarod Wilson - 1.39-7 +- 32-bit 16T fixups from esandeen (#202807) +- Update summaries and descriptions + +* Sun Sep 17 2006 Karel Zak - 1.39-6 +- Fix problem with empty FAT label (#206656) + +* Tue Sep 5 2006 Peter Jones - 1.39-5 +- Fix memory leak in device probing. + +* Mon Jul 24 2006 Thomas Woerner - 1.39-4 +- fixed multilib devel conflicts (#192665) + +* Thu Jul 20 2006 Bill Nottingham - 1.39-3 +- prevent libblkid returning /dev/dm-X + +* Wed Jul 12 2006 Jesse Keating - 1.39-2.1 +- rebuild + +* Mon Jul 10 2006 Karel Zak - 1.39-2 +- add GFS abd GFS2 support to libblkid + +* Thu Jul 6 2006 Thomas Woerner - 1.39-1 +- new version 1.39 +- dropped ext2online, because resize2fs is now able to do online resize +- spec file cleanup +- enabled checks for build + +* Tue Jun 13 2006 Bill Nottingham - 1.38-15 +- prevent libblkid returning /dev/dm-X +- fix build + +* Tue Mar 21 2006 Karel Zak - 1.38-14 +- prevent error messages to stderr caused by libblkid calling libdevmapper + +* Mon Mar 13 2006 Karel Zak - 1.38-13 +- used upstream version of the blkid-epoch patch (by Theodore Tso, #182188) + +* Wed Mar 8 2006 Peter Jones - 1.38-12 +- Move /etc/blkid.tab to /etc/blkid/blkid.tab + +* Tue Mar 7 2006 David Cantrell - 1.38-11 +- BuildRequires pkgconfig + +* Tue Mar 7 2006 David Cantrell - 1.38-10 +- Disable /etc/blkid.tab caching if time is set before epoch (#182188) + +* Fri Feb 24 2006 Peter Jones - 1.38-9 +- _don't_ handle selinux context on blkid.tab, dwalsh says this is a no-no. + +* Wed Feb 22 2006 Peter Jones - 1.38-8 +- handle selinux context on blkid.tab + +* Mon Feb 20 2006 Karsten Hopp 1.38-7 +- BuildRequires: gettext-devel + +* Fri Feb 10 2006 Jesse Keating - 1.38-6.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 7 2006 Jesse Keating - 1.38-6.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Wed Jan 11 2006 Karel Zak 1.38-6 +- cleanup device-mapper patch +- use pkg-config for device-mapper + +* Mon Jan 9 2006 Peter Jones 1.38-5 +- fix some more minor logic errors in dm probing + +* Wed Jan 4 2006 Peter Jones 1.38-4 +- fix a logic error in dm probing +- add priority group for dm devices, so they'll be preferred + +* Tue Jan 3 2006 Peter Jones 1.38-3 +- added support for device-mapper devices + +* Fri Dec 9 2005 Jesse Keating +- rebuilt + +* Thu Nov 10 2005 Thomas Woerner 1.38-2.1 +- fixed file conflicts between 32bit and 64bit packages (#168815) +- fixed mklost+found crashes with buffer overflow (#157773) + Thanks to Arjan van de Ven for the patch + +* Wed Nov 9 2005 Thomas Woerner 1.38-2 +- splitted up libs from main package, into a new e2fsprogs-libs package +- fixed requires and prereqs + +* Thu Sep 8 2005 Thomas Woerner 1.38-1 +- new version 1.38 +- Close File descriptor for unregognized devices (#159878) + Thanks to David Milburn for the patch. + Merged from RHEL-4 +- enable tune2fs to set and clear feature resize_inode (#167816) +- removed outdated information from ext2online man page (#164383) +