Re: [PATCH 1/2] erofs: using macro instead of definition of log functions

From: Gao Xiang
Date: Wed Oct 16 2024 - 23:40:12 EST


Hi Hao,

On 2024/10/16 23:24, Gou Hao wrote:
No functional change intended.

Signed-off-by: Gou Hao <gouhao@xxxxxxxxxxxxx>
---
fs/erofs/super.c | 51 ++++++++++++++++++------------------------------
1 file changed, 19 insertions(+), 32 deletions(-)

diff --git a/fs/erofs/super.c b/fs/erofs/super.c
index 666873f745da..b04f888c8123 100644
--- a/fs/erofs/super.c
+++ b/fs/erofs/super.c
@@ -18,39 +18,26 @@
static struct kmem_cache *erofs_inode_cachep __read_mostly;
-void _erofs_err(struct super_block *sb, const char *func, const char *fmt, ...)
-{
- struct va_format vaf;
- va_list args;
-
- va_start(args, fmt);
-
- vaf.fmt = fmt;
- vaf.va = &args;
-
- if (sb)
- pr_err("(device %s): %s: %pV", sb->s_id, func, &vaf);
- else
- pr_err("%s: %pV", func, &vaf);
- va_end(args);
-}
-
-void _erofs_info(struct super_block *sb, const char *func, const char *fmt, ...)
-{
- struct va_format vaf;
- va_list args;
-
- va_start(args, fmt);
-
- vaf.fmt = fmt;
- vaf.va = &args;
+#define _erofs_log_def(name) \
+ void _erofs_##name(struct super_block *sb, const char *func, const char *fmt, ...) \
+ { \
+ struct va_format vaf; \
+ va_list args; \
+ \
+ va_start(args, (fmt)); \
+ \
+ vaf.fmt = (fmt); \
+ vaf.va = &args; \
+ \
+ if ((sb)) \
+ pr_##name("(device %s): %s: %pV", (sb)->s_id, (func), &vaf); \
+ else \
+ pr_##name("%s: %pV", (func), &vaf); \
+ va_end(args); \
+ }

Thanks for the patch!

Although code simplicity is quite important for EROFS, but
I'm not sure introducing unnecessary macro definitions (which
can be avoided) is better for code readability.

I wonder if we can put this into another way, like the current
_btrfs_printk() and _f2fs_printk() if we really need to work
on this.

Thanks,
Gao Xiang