Package: e2fsprogs / 1.47.2-3~bpo12+1

Metadata

Package Version Patches format
e2fsprogs 1.47.2-3~bpo12+1 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
0001 e2fsck fix logic bug when there are no references to.patch | (download)

e2fsck/pass4.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 e2fsck: fix logic bug when there are no references to an ea inode

There was a boolean logic error which, among other things, could cause
an attempt to modify an inode in e2fsck -n mode:

e2fsck 1.47.2 (1-Jan-2025)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
ext2fs_write_inode: Attempt to write to filesystem opened read-only while writing inode 14 in pass4
e2fsck: aborted

Fixes: 849a9e6e133a ("e2fsck: add more checks for ea inode consistency")
0002 test fix expect files which changed after EA bugfix.patch | (download)

tests/f_ea_inode_disconnected/expect.1 | 2 2 + 0 - 0 !
tests/f_ea_inode_self_ref/expect.1 | 2 0 + 2 - 0 !
2 files changed, 2 insertions(+), 2 deletions(-)

 test: fix expect files which changed after ea bugfix

The logic bug which was fixed in commit 92b6e93936d7 ("e2fsck: fix
logic bug when there are no references...") resulted in some silent
fixes that were never logged, and in some cases, corruption that was
not cleaned up.   Fix the tests so that they pass as expected.

Fixes: 92b6e93936d7 ("e2fsck: fix logic bug when there are no references..."
0003 libext2fs teach ext2fs_extent_set_bmap to update ext.patch | (download)

lib/ext2fs/extent.c | 25 24 + 1 - 0 !
tests/f_badcluster/expect | 8 4 + 4 - 0 !
2 files changed, 28 insertions(+), 5 deletions(-)

 libext2fs: teach ext2fs_extent_set_bmap() to update extents more optimally

When programs like resize2fs or e2fsck relocates all of the blocks in
an extent one at a time, the ext2fs_extent_set_bmap() works by
initially adding a new extent and then moving mapping from the old
extent to the new extent.  For example:

t=1   EXTENTS: (0-2) 1152-1154

t=2   EXTENTS: (0) 1136, (1-2) 1153-1154

t=3   EXTENTS: (0-1) 1136-1137, (2) 1154

Unfortunately, previously, when the last block is updated, the
resulting extent tree will have two extents instead of one, like this:

t=4   EXTENTS: (0-1) 1136-1137, (2) 1138

With this commit, the resulting extent tree will be more optimally
represented with a single extent:

t=4   EXTENTS: (0-2) 1136-1138

The optimization in this commit solves the prolem reproted at:
https://github.com/tytso/e2fsprogs/issues/146

In that case, the file had a very large, complex (fragmented) extent
tree, and resize2fs needed to relcate all of its blocks as part of a
off-line shrink, the lack of the optimization led to an extent block
overflowing, resulting in the old extent (the one which originally
mapped logical block 2507128 to physical block 389065080) and the new
0004 e2image.8 add missing comma.patch | (download)

misc/e2image.8.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 e2image.8: add missing comma
0005 debugfs byteswap dirsearch dirent buf on big endian .patch | (download)

debugfs/htree.c | 6 6 + 0 - 0 !
1 file changed, 6 insertions(+)

 debugfs: byteswap dirsearch dirent buf on big endian systems

fstests test ext4/048 fails on big endian systems due to broken
debugfs dirsearch functionality. On an s390x system and 4k block
size, the dirsearch command seems to hang indefinitely. On the same
system with a 1k block size, the command fails to locate an existing
entry and causes the test to fail due to unexpected results.

The cause of the dirsearch failure is lack of byte swapping of the
on-disk (little endian) dirent buffer before attempting to iterate
entries in the given block. This leads to garbage record and name
length values, for example. To resolve this problem, byte swap the
directory buffer on big endian systems.

0006 fuse2fs refuse unsupported features.patch | (download)

misc/fuse2fs.c | 20 20 + 0 - 0 !
1 file changed, 20 insertions(+)

 fuse2fs: refuse unsupported features

Don't mount a filesystem with superblock features that we don't actually
know how to support.

0007 fuse2fs return EOPNOTSUPP when we don t recognize a .patch | (download)

misc/fuse2fs.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 fuse2fs: return -eopnotsupp when we don't recognize a fallocate mode

If we don't recognize a set bit in the mode parameter to fallocate,
return EOPNOTSUPP to communicate that we don't support that mode instead
of EINVAL.  This avoids unnecessary failures in generic/521.

0008 fuse2fs remove posix acl translation.patch | (download)

misc/fuse2fs.c | 267 4 + 263 - 0 !
1 file changed, 4 insertions(+), 263 deletions(-)

 fuse2fs: remove posix acl translation

Remove the POSIX ACL format translation since libext2fs takes care of
that now.

Fixes: 0ee1eaf70c257e ("libext2fs: translate internal ext4 acl to Posix ACL in ext2fs_xattr_[sg]et()")
0009 fuse2fs clamp timestamps that are being written to d.patch | (download)

lib/ext2fs/ext2_fs.h | 4 4 + 0 - 0 !
misc/fuse2fs.c | 39 32 + 7 - 0 !
2 files changed, 36 insertions(+), 7 deletions(-)

 fuse2fs: clamp timestamps that are being written to disk

Clamp the timestamps that we write to disk to the minimum and maximum
values permitted given the ondisk format.  This fixes y2038 support, as
tested by generic/402.

0010 fuse2fs update new child timestamps during mkdir sym.patch | (download)

misc/fuse2fs.c | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 fuse2fs: update new child timestamps during mkdir/symlink

These two file creation functions fail to update the timestamps of the
new child file, unlike the others (mknod/creat).  Fix that.

0011 fuse2fs disable renameat2.patch | (download)

misc/fuse2fs.c | 6 6 + 0 - 0 !
1 file changed, 6 insertions(+)

 fuse2fs: disable renameat2

Apparently fuse munged rename and renameat2 together into the same
upcall, so we actually have to filter out nonzero flags because
otherwise we do a regular rename for a RENAME_EXCHANGE/WHITEOUT, which
is not what the user asked for.

0012 debugfs abort reading a file on failure when dumping.patch | (download)

debugfs/dump.c | 4 3 + 1 - 0 !
1 file changed, 3 insertions(+), 1 deletion(-)

 debugfs: abort reading a file on failure when dumping out a file

If ext2fs_file_read() fails 
0013 mke2fs disallow O verity without extents.patch | (download)

misc/mke2fs.c | 8 8 + 0 - 0 !
1 file changed, 8 insertions(+)

 mke2fs: disallow -o verity without extents

Similar to 64-bit support, fs-verity support requires extents, so don't
allow to create a filesystem that has -O verity unless it also supports
extents.

0014 e2fsck fix e2fsck E unshare_blocks when there are no.patch | (download)

e2fsck/pass1.c | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 e2fsck: fix e2fsck -e unshare_blocks when there are no shared blocks

If there are no shared blocks in a ext4 file system, e2fsck -E
unshare_blocks will not actually clear the shared_blocks feature flag
since e2fsck_pass1_dupblocks() is never called.  Fix this by adding a
check in e2fsck_pass1() to clear the shared blocks flag.

Bug: https://github.com/tytso/e2fsprogs/issues/218
0015 e2freefrag require that the chunksize must be greate.patch | (download)

misc/e2freefrag.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 e2freefrag: require that the chunksize must be greater than 0

"e2freefrag -c 0" doesn't make much sense, so abort with an error
message if the user specifies a zero chunksize.

Addresses-Coverity-Bug: 1633767
0016 mke2fs add range checks for E desc_size.patch | (download)

misc/mke2fs.c | 5 4 + 1 - 0 !
1 file changed, 4 insertions(+), 1 deletion(-)

 mke2fs: add range checks for -e desc_size

Prevent the user from specifying group descriptor that result in
invalid/corrupted file systems.

0017 debugfs return after printing the usage message in t.patch | (download)

misc/e2freefrag.c | 9 9 + 0 - 0 !
1 file changed, 9 insertions(+)

 debugfs: return after printing the usage message in the e2freefrag command

0020 mke2fs fix a misindentation in the man page.patch | (download)

misc/mke2fs.8.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 mke2fs: fix a misindentation in the man page

Problem existed since commit 3c22bf7e70 from twelve years ago.

0021 libext2fs fix a extent tree corruption bug in ext2fs.patch | (download)

lib/ext2fs/extent.c | 18 9 + 9 - 0 !
1 file changed, 9 insertions(+), 9 deletions(-)

 libext2fs: fix a extent tree corruption bug in ext2fs_extent_set_bmap()

In the case where we are moving a particular logical block mapping
from a particular extent tree entry, to the immediately precending
entry (when the physical block or uninitialized flag is changing so it
can be coalesced with the precending entry) and the precending entry
0022 libext2fs fix integer overflow in ext2fs_punch when .patch | (download)

lib/ext2fs/punch.c | 8 4 + 4 - 0 !
1 file changed, 4 insertions(+), 4 deletions(-)

 libext2fs: fix integer overflow in ext2fs_punch() when releasing more than 2**31 blocks