From 0ac5da554385bee1493faf1fadb791ba682d5754 Mon Sep 17 00:00:00 2001 From: hifi521 <1067551775@qq.com> Date: Fri, 20 May 2022 02:52:51 +0000 Subject: [PATCH] e2fsck: do not clean up file acl if the inode is truncating type Fix issue: https://gitee.com/src-openeuler/e2fsprogs/issues/I586JP Signed-off-by: zhanchengbin (cherry picked from commit 3be4d743cd16ff979e0fc4ab3f0886c9868e5827) --- ...ean-up-file-acl-if-the-inode-is-trun.patch | 61 +++++++++++++++++++ e2fsprogs.spec | 6 +- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 0041-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch diff --git a/0041-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch b/0041-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch new file mode 100644 index 0000000..800d956 --- /dev/null +++ b/0041-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch @@ -0,0 +1,61 @@ +From 3dcbf460613413614684013a51279f1e65c32f9e Mon Sep 17 00:00:00 2001 +From: zhanchengbin +Date: Wed, 18 May 2022 15:16:25 +0800 +Subject: [PATCH] e2fsck: do not clean up file acl if the inode is truncating + type + +We got issue as follows: + [root@localhost ~]# e2fsck -a img + img: recovering journal + img: Truncating orphaned inode 188 (uid=0, gid=0, mode=0100666, size=0) + img: Truncating orphaned inode 174 (uid=0, gid=0, mode=0100666, size=0) + img: clean, 484/128016 files, 118274/512000 blocks + [root@localhost ~]# e2fsck -fn img + e2fsck 1.46.5 (30-Dec-2021) + Pass 1: Checking inodes, blocks, and sizes + Inode 174, i_blocks is 2, should be 0. Fix? no + + Inode 188, i_blocks is 2, should be 0. Fix? no + + Pass 2: Checking directory structure + Pass 3: Checking directory connectivity + Pass 4: Checking reference counts + Pass 5: Checking group summary information + + img: ********** WARNING: Filesystem still has errors ********** + + img: 484/128016 files (24.6% non-contiguous), 118274/512000 blocks + +File acl would be clean up in release_inode_blocks, whether the orphan +node is truncating or clearing type. If the inode is truncating type, +the file acl would be clean up, but the blocks count is not be +subtract acl blocks, and the inode is not unmark in bitmap, which causes +this issue. + +To slove this issue, do not clean up file acl if the inode is truncating +type. + +Signed-off-by: LiJinlin +Signed-off-by: zhanchengbin +--- + e2fsck/super.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/e2fsck/super.c b/e2fsck/super.c +index 31e2ffb..ec28426 100644 +--- a/e2fsck/super.c ++++ b/e2fsck/super.c +@@ -235,6 +235,10 @@ static int release_inode_blocks(e2fsck_t ctx, ext2_ino_t ino, + if (pb.truncated_blocks) + ext2fs_iblk_sub_blocks(fs, EXT2_INODE(inode), + pb.truncated_blocks); ++ ++ /* do not clean up file acl if the inode is truncating type */ ++ if (inode->i_links_count) ++ return 0; + + blk = ext2fs_file_acl_block(fs, EXT2_INODE(inode)); + if (blk) { +-- +1.8.3.1 + diff --git a/e2fsprogs.spec b/e2fsprogs.spec index 19ba213..faeb483 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -1,6 +1,6 @@ Name: e2fsprogs Version: 1.45.6 -Release: 8 +Release: 9 Summary: Second extended file system management tools License: GPLv2 and LGPLv2 and GPLv2+ URL: http://e2fsprogs.sourceforge.net/ @@ -47,6 +47,7 @@ Patch37: 0037-libext2fs-fix-coverity-nits-in-tdb.c.patch Patch38: 0038-e2fsck-exit-journal-recovery-when-find-EIO-ENOMEM-er.patch Patch39: 0039-e2fsck-exit-journal-recovery-when-jounral-superblock.patch Patch40: 0040-e2fsck-add-env-param-E2FS_UNRELIABLE_IO-to-fi.patch +Patch41: 0041-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch BuildRequires: gcc pkgconfig texinfo BuildRequires: fuse-devel libblkid-devel libuuid-devel @@ -168,6 +169,9 @@ exit 0 %{_mandir}/man8/* %changelog +* Fri May 20 2022 zhanchengbin - 1.45.6-9 +- e2fsck: do not clean up file acl if the inode is truncating type + * Sun Jan 30 2021 Zhiqiang Liu - 1.45.6-8 - DESC: fix three issues: - e2fsck: exit journal recovery when find EIO, ENOMEM errors -- Gitee