[PATCH 2/2] erofs-utils: cleanup redundant logic in erofs_iflush()
Gao Xiang
hsiangkao at linux.alibaba.com
Thu Mar 6 04:39:29 AEDT 2025
No logic changes.
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
lib/inode.c | 57 ++++++++++++-----------------------------------------
1 file changed, 13 insertions(+), 44 deletions(-)
diff --git a/lib/inode.c b/lib/inode.c
index 434eafb..34c6128 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -592,6 +592,7 @@ int erofs_iflush(struct erofs_inode *inode)
struct erofs_inode_compact dic;
struct erofs_inode_extended die;
} u = {};
+ union erofs_inode_i_u u1;
int ret;
if (inode->bh)
@@ -599,6 +600,16 @@ int erofs_iflush(struct erofs_inode *inode)
else
off = erofs_iloc(inode);
+ if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
+ S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode))
+ u1.rdev = cpu_to_le32(inode->u.i_rdev);
+ else if (is_inode_layout_compression(inode))
+ u1.compressed_blocks = cpu_to_le32(inode->u.i_blocks);
+ else if (inode->datalayout == EROFS_INODE_CHUNK_BASED)
+ u1.c.format = cpu_to_le16(inode->u.chunkformat);
+ else
+ u1.raw_blkaddr = cpu_to_le32(inode->u.i_blkaddr);
+
switch (inode->inode_isize) {
case sizeof(struct erofs_inode_compact):
u.dic.i_format = cpu_to_le16(0 | (inode->datalayout << 1));
@@ -611,28 +622,7 @@ int erofs_iflush(struct erofs_inode *inode)
u.dic.i_uid = cpu_to_le16((u16)inode->i_uid);
u.dic.i_gid = cpu_to_le16((u16)inode->i_gid);
-
- switch (inode->i_mode & S_IFMT) {
- case S_IFCHR:
- case S_IFBLK:
- case S_IFIFO:
- case S_IFSOCK:
- u.dic.i_u.rdev = cpu_to_le32(inode->u.i_rdev);
- break;
-
- default:
- if (is_inode_layout_compression(inode))
- u.dic.i_u.compressed_blocks =
- cpu_to_le32(inode->u.i_blocks);
- else if (inode->datalayout ==
- EROFS_INODE_CHUNK_BASED)
- u.dic.i_u.c.format =
- cpu_to_le16(inode->u.chunkformat);
- else
- u.dic.i_u.raw_blkaddr =
- cpu_to_le32(inode->u.i_blkaddr);
- break;
- }
+ u.dic.i_u = u1;
break;
case sizeof(struct erofs_inode_extended):
u.die.i_format = cpu_to_le16(1 | (inode->datalayout << 1));
@@ -648,28 +638,7 @@ int erofs_iflush(struct erofs_inode *inode)
u.die.i_mtime = cpu_to_le64(inode->i_mtime);
u.die.i_mtime_nsec = cpu_to_le32(inode->i_mtime_nsec);
-
- switch (inode->i_mode & S_IFMT) {
- case S_IFCHR:
- case S_IFBLK:
- case S_IFIFO:
- case S_IFSOCK:
- u.die.i_u.rdev = cpu_to_le32(inode->u.i_rdev);
- break;
-
- default:
- if (is_inode_layout_compression(inode))
- u.die.i_u.compressed_blocks =
- cpu_to_le32(inode->u.i_blocks);
- else if (inode->datalayout ==
- EROFS_INODE_CHUNK_BASED)
- u.die.i_u.c.format =
- cpu_to_le16(inode->u.chunkformat);
- else
- u.die.i_u.raw_blkaddr =
- cpu_to_le32(inode->u.i_blkaddr);
- break;
- }
+ u.die.i_u = u1;
break;
default:
erofs_err("unsupported on-disk inode version of nid %llu",
--
2.43.5
More information about the Linux-erofs
mailing list