From 7a2901d22ce3b689ba23406bd185ef50dacb43b2 Mon Sep 17 00:00:00 2001 From: zhanchengbin Date: Thu, 19 May 2022 14:30:58 +0800 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 0b6416e7f0e7ab514d8b87e9463387b12f64d87e) --- ...ean-up-file-acl-if-the-inode-is-trun.patch | 61 +++++++++++++++++++ e2fsprogs.spec | 6 +- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 0013-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch diff --git a/0013-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch b/0013-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch new file mode 100644 index 0000000..3bcc6b1 --- /dev/null +++ b/0013-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 d9245e8..a71f134 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -1,6 +1,6 @@ Name: e2fsprogs Version: 1.46.4 -Release: 7 +Release: 8 Summary: Second extended file system management tools License: GPLv2+ and LGPLv2 and MIT URL: http://e2fsprogs.sourceforge.net/ @@ -18,6 +18,7 @@ Patch9: 0009-e2mmpstatus.8.in-detele-filesystem-can-be-UUID-or-LA.patch Patch10: 0010-tests-update-expect-file-for-u_direct_io.patch Patch11: 0011-libext2fs-don-t-old-the-CACHE_MTX-while-doing-I-O.patch Patch12: 0012-tests-skip-m_rootdir_acl-if-selinux-is-not-disabled.patch +Patch13: 0013-e2fsck-do-not-clean-up-file-acl-if-the-inode-is-trun.patch BuildRequires: gcc pkgconfig texinfo @@ -140,6 +141,9 @@ exit 0 %{_mandir}/man8/* %changelog +* Wed May 18 2022 zhanchengbin - 1.46.4-8 +- e2fsck: do not clean up file acl if the inode is truncating type + * Thu Feb 17 2022 zhanchengbin - 1.46.4-7 - tests: skip m_rootdir_acl if selinux is not disabled -- Gitee