erofs: some macros are much more readable as a function
authorGao Xiang <gaoxiang25@huawei.com>
Wed, 4 Sep 2019 02:08:50 +0000 (10:08 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Sep 2019 18:10:07 +0000 (20:10 +0200)
As Christoph suggested [1], these macros are much
more readable as a function.

[1] https://lore.kernel.org/r/20190829095954.GB20598@infradead.org/
Reported-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Link: https://lore.kernel.org/r/20190904020912.63925-4-gaoxiang25@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/erofs/erofs_fs.h
fs/erofs/inode.c
fs/erofs/xattr.c

index d1f152a3670af083d1327a5362de396d1cf2db18..c1220b0f26e0764418cc9d8e0b01131bcd1afa6b 100644 (file)
@@ -171,16 +171,22 @@ struct erofs_xattr_entry {
        char   e_name[0];       /* attribute name */
 } __packed;
 
-#define ondisk_xattr_ibody_size(count) ({\
-       u32 __count = le16_to_cpu(count); \
-       ((__count) == 0) ? 0 : \
-       sizeof(struct erofs_xattr_ibody_header) + \
-               sizeof(__u32) * ((__count) - 1); })
+static inline unsigned int erofs_xattr_ibody_size(__le16 i_xattr_icount)
+{
+       if (!i_xattr_icount)
+               return 0;
+
+       return sizeof(struct erofs_xattr_ibody_header) +
+               sizeof(__u32) * (le16_to_cpu(i_xattr_icount) - 1);
+}
 
 #define EROFS_XATTR_ALIGN(size) round_up(size, sizeof(struct erofs_xattr_entry))
-#define EROFS_XATTR_ENTRY_SIZE(entry) EROFS_XATTR_ALIGN( \
-       sizeof(struct erofs_xattr_entry) + \
-       (entry)->e_name_len + le16_to_cpu((entry)->e_value_size))
+
+static inline unsigned int erofs_xattr_entry_size(struct erofs_xattr_entry *e)
+{
+       return EROFS_XATTR_ALIGN(sizeof(struct erofs_xattr_entry) +
+                                e->e_name_len + le16_to_cpu(e->e_value_size));
+}
 
 /* available compression algorithm types */
 enum {
index 8a0574530a0a4d242e20ca7f5a37ed3013bfd01b..3fc4f764b38703d5843788027bc0887c172d43c8 100644 (file)
@@ -29,7 +29,7 @@ static int read_inode(struct inode *inode, void *data)
                struct erofs_inode_v2 *v2 = data;
 
                vi->inode_isize = sizeof(struct erofs_inode_v2);
-               vi->xattr_isize = ondisk_xattr_ibody_size(v2->i_xattr_icount);
+               vi->xattr_isize = erofs_xattr_ibody_size(v2->i_xattr_icount);
 
                inode->i_mode = le16_to_cpu(v2->i_mode);
                if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
@@ -62,7 +62,7 @@ static int read_inode(struct inode *inode, void *data)
                struct erofs_sb_info *sbi = EROFS_SB(inode->i_sb);
 
                vi->inode_isize = sizeof(struct erofs_inode_v1);
-               vi->xattr_isize = ondisk_xattr_ibody_size(v1->i_xattr_icount);
+               vi->xattr_isize = erofs_xattr_ibody_size(v1->i_xattr_icount);
 
                inode->i_mode = le16_to_cpu(v1->i_mode);
                if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
index d80f61dde72ffa7a3e857e3f0340248bb8bb92de..620cbc15f4d0222815a4cd7ee436ee7dc18f20af 100644 (file)
@@ -231,7 +231,7 @@ static int xattr_foreach(struct xattr_iter *it,
         */
        entry = *(struct erofs_xattr_entry *)(it->kaddr + it->ofs);
        if (tlimit) {
-               unsigned int entry_sz = EROFS_XATTR_ENTRY_SIZE(&entry);
+               unsigned int entry_sz = erofs_xattr_entry_size(&entry);
 
                /* xattr on-disk corruption: xattr entry beyond xattr_isize */
                if (*tlimit < entry_sz) {