diff --git a/e2fsprogs-1.41.4-extent-open-leak.patch b/e2fsprogs-1.41.4-extent-open-leak.patch deleted file mode 100644 index 8d4112b..0000000 --- a/e2fsprogs-1.41.4-extent-open-leak.patch +++ /dev/null @@ -1,28 +0,0 @@ -Each time an extent handle is opened and closed, if the inode has an -extent tree which does not fit in the inode's i_block structure, a -filesystem block buffer was not getting released. Since e2fsck opens -an extent handle for every inode using extents, this can translate to -a very large amount of memory getting lost. - -Thanks to Henrik 'Mauritz' Johnson for discovering and pointing out -this leak, which he ran into while running the "rdump" command in -debugfs. - -Signed-off-by: "Theodore Ts'o" ---- - lib/ext2fs/extent.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c -index b7eb617..2b88739 100644 ---- a/lib/ext2fs/extent.c -+++ b/lib/ext2fs/extent.c -@@ -168,7 +168,7 @@ extern void ext2fs_extent_free(ext2_extent_handle_t handle) - if (handle->inode) - ext2fs_free_mem(&handle->inode); - if (handle->path) { -- for (i=1; i < handle->max_depth; i++) { -+ for (i=1; i <= handle->max_depth; i++) { - if (handle->path[i].buf) - ext2fs_free_mem(&handle->path[i].buf); - } diff --git a/e2fsprogs-1.41.4-no-full-inode-write-in-extentcode.patch b/e2fsprogs-1.41.4-no-full-inode-write-in-extentcode.patch deleted file mode 100644 index 20ec2e2..0000000 --- a/e2fsprogs-1.41.4-no-full-inode-write-in-extentcode.patch +++ /dev/null @@ -1,55 +0,0 @@ -commit 125a36780626cdb0fc4d62fd529486baa8bce54c -Author: Eric Sandeen -Date: Wed Jun 17 18:49:01 2009 -0400 - - libext2fs: write only core inode in update_path() - - The ext2_extent_handle only has a struct ext2_inode allocated on - it, and the same amount copied into it in that same function, - but in update_path() we're possibly writing out more than that - - for example 256 bytes, from that address. This causes uninitialized - memory to get written to disk, overwriting the parts of the - inode past the osd2 member (the end of the smaller structure). - - Signed-off-by: Eric Sandeen - Signed-off-by: "Theodore Ts'o" - -diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c -index 2b88739..35b080e 100644 ---- a/lib/ext2fs/extent.c -+++ b/lib/ext2fs/extent.c -@@ -546,8 +546,8 @@ static errcode_t update_path(ext2_extent_handle_t handle) - struct ext3_extent_idx *ix; - - if (handle->level == 0) { -- retval = ext2fs_write_inode_full(handle->fs, handle->ino, -- handle->inode, EXT2_INODE_SIZE(handle->fs->super)); -+ retval = ext2fs_write_inode(handle->fs, handle->ino, -+ handle->inode); - } else { - ix = handle->path[handle->level - 1].curr; - blk = ext2fs_le32_to_cpu(ix->ei_leaf) + -@@ -1011,8 +1011,8 @@ static errcode_t extent_node_split(ext2_extent_handle_t handle) - - /* new node hooked in, so update inode block count (do this here?) */ - handle->inode->i_blocks += handle->fs->blocksize / 512; -- retval = ext2fs_write_inode_full(handle->fs, handle->ino, -- handle->inode, EXT2_INODE_SIZE(handle->fs->super)); -+ retval = ext2fs_write_inode(handle->fs, handle->ino, -+ handle->inode); - if (retval) - goto done; - -@@ -1370,9 +1370,8 @@ errcode_t ext2fs_extent_delete(ext2_extent_handle_t handle, int flags) - - retval = ext2fs_extent_delete(handle, flags); - handle->inode->i_blocks -= handle->fs->blocksize / 512; -- retval = ext2fs_write_inode_full(handle->fs, -- handle->ino, handle->inode, -- EXT2_INODE_SIZE(handle->fs->super)); -+ retval = ext2fs_write_inode(handle->fs, handle->ino, -+ handle->inode); - ext2fs_block_alloc_stats(handle->fs, extent.e_pblk, -1); - } - } else { - diff --git a/e2fsprogs-1.41.4-update-sb-journal-backup.patch b/e2fsprogs-1.41.4-update-sb-journal-backup.patch deleted file mode 100644 index 1f26210..0000000 --- a/e2fsprogs-1.41.4-update-sb-journal-backup.patch +++ /dev/null @@ -1,89 +0,0 @@ -This was reported in Fedora, since the livecd creator does -a lot of resizing. - -If we've moved the journal blocks during resize (more likely now, -due to the journal being in the middle) the backup blocks in the -superblock don't get updated, and a subsequent e2fsck will find -issues: - -e2fsck 1.41.6 (30-May-2009) -Backing up journal inode block information. - -Pass 1: Checking inodes, blocks, and sizes -Pass 2: Checking directory structure -Pass 3: Checking directory connectivity -Pass 4: Checking reference counts -Pass 5: Checking group summary information - -/mnt/test/img: ***** FILE SYSTEM WAS MODIFIED ***** -/mnt/test/img: 11/16000 files (0.0% non-contiguous), 17789/38400 blocks - -This can be shown in a simple test: - -# dd if=/dev/zero of=img bs=1 count=0 seek=3000M -# mke2fs -t ext4 -F img -# resize2fs img 150M -# e2fsck -f img - -(thanks to the Fedora reporter Mads Kiilerich for the testcase! -https://bugzilla.redhat.com/show_bug.cgi?id=506105#c2) - -So, update the backup journal in the superblock before resize2fs exits. - -Signed-off-by: Eric Sandeen -Resolves-RH-Bugzilla: 505339 ---- - -diff --git a/resize/resize2fs.c b/resize/resize2fs.c -index 0d5dc81..63c469f 100644 ---- a/resize/resize2fs.c -+++ b/resize/resize2fs.c -@@ -49,6 +49,7 @@ static errcode_t inode_ref_fix(ext2_resize_t rfs); - static errcode_t move_itables(ext2_resize_t rfs); - static errcode_t fix_resize_inode(ext2_filsys fs); - static errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs); -+static errcode_t fix_sb_journal_backup(ext2_filsys fs); - - /* - * Some helper CPP macros -@@ -148,6 +149,10 @@ errcode_t resize_fs(ext2_filsys fs, blk_t *new_size, int flags, - if (retval) - goto errout; - -+ retval = fix_sb_journal_backup(rfs->new_fs); -+ if (retval) -+ goto errout; -+ - rfs->new_fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY; - retval = ext2fs_close(rfs->new_fs); - if (retval) -@@ -1857,6 +1862,28 @@ static errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs) - } - - /* -+ * Journal may have been relocated; update the backup journal blocks -+ * in the superblock. -+ */ -+static errcode_t fix_sb_journal_backup(ext2_filsys fs) -+{ -+ errcode_t retval; -+ struct ext2_inode inode; -+ -+ if (!(fs->super->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL)) -+ return 0; -+ -+ retval = ext2fs_read_inode(fs, fs->super->s_journal_inum, &inode); -+ if (retval) -+ return retval; -+ memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4); -+ fs->super->s_jnl_blocks[16] = inode.i_size; -+ fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS; -+ ext2fs_mark_super_dirty(fs); -+ return 0; -+} -+ -+/* - * calcluate the minimum number of blocks the given fs can be resized to - */ - blk_t calculate_minimum_resize_size(ext2_filsys fs) - diff --git a/e2fsprogs.spec b/e2fsprogs.spec index 6ecf46a..f1ab320 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -3,8 +3,8 @@ Summary: Utilities for managing ext2, ext3, and ext4 filesystems Name: e2fsprogs -Version: 1.41.6 -Release: 6%{?dist} +Version: 1.41.7 +Release: 1%{?dist} # License tags based on COPYING file distinctions for various components License: GPLv2 Group: System Environment/Base @@ -13,11 +13,6 @@ Source1: ext2_types-wrapper.h Source3: uuidd.init Patch2: e2fsprogs-1.40.4-sb_feature_check_ignore.patch -# Upstream or soon to be: -Patch3: e2fsprogs-1.41.4-update-sb-journal-backup.patch -Patch4: e2fsprogs-1.41.4-extent-open-leak.patch -Patch5: e2fsprogs-1.41.4-no-full-inode-write-in-extentcode.patch - Url: http://e2fsprogs.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: e2fsprogs-libs = %{version}-%{release}, device-mapper @@ -184,9 +179,6 @@ See also the "uuid-devel" package, which is a separate implementation. # mildly unsafe but 'til I get something better, avoid full fsck # after an selinux install... %patch2 -p1 -b .featurecheck -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 %build %configure --enable-elf-shlibs --enable-nls \ @@ -397,6 +389,9 @@ fi %{_libdir}/pkgconfig/uuid.pc %changelog +* 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