On Thu 22-10-20 06:21:00, Roman Anufriev wrote: > Right now, it is hard to understand which quota journalling type is enabled: > you need to be quite familiar with kernel code and trace it or really > understand what different combinations of fs flags/mount options lead to. > > This patch adds printing of current quota jounalling mode on each > mount/remount, thus making it easier to check it at a glance/in autotests. > The semantics is similar to ext4 data journalling modes: > > * journalled - quota configured, journalling will be enabled > * writeback - quota configured, journalling won't be enabled > * none - quota isn't configured > * disabled - kernel compiled without CONFIG_QUOTA feature > > Signed-off-by: Roman Anufriev <dotdot@xxxxxxxxxxxxxx> Looks good to me. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/ext4/super.c | 23 ++++++++++++++++++++--- > 1 file changed, 20 insertions(+), 3 deletions(-) > > diff --git a/fs/ext4/super.c b/fs/ext4/super.c > index a988cf3..f2ddba4 100644 > --- a/fs/ext4/super.c > +++ b/fs/ext4/super.c > @@ -3985,6 +3985,21 @@ static void ext4_set_resv_clusters(struct super_block *sb) > atomic64_set(&sbi->s_resv_clusters, resv_clusters); > } > > +static const char *ext4_quota_mode(struct super_block *sb) > +{ > +#ifdef CONFIG_QUOTA > + if (!ext4_quota_capable(sb)) > + return "none"; > + > + if (EXT4_SB(sb)->s_journal && ext4_is_quota_journalled(sb)) > + return "journalled"; > + else > + return "writeback"; > +#else > + return "disabled"; > +#endif > +} > + > static int ext4_fill_super(struct super_block *sb, void *data, int silent) > { > struct dax_device *dax_dev = fs_dax_get_by_bdev(sb->s_bdev); > @@ -5039,10 +5054,11 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) > > if (___ratelimit(&ext4_mount_msg_ratelimit, "EXT4-fs mount")) > ext4_msg(sb, KERN_INFO, "mounted filesystem with%s. " > - "Opts: %.*s%s%s", descr, > + "Opts: %.*s%s%s. Quota mode: %s.", descr, > (int) sizeof(sbi->s_es->s_mount_opts), > sbi->s_es->s_mount_opts, > - *sbi->s_es->s_mount_opts ? "; " : "", orig_data); > + *sbi->s_es->s_mount_opts ? "; " : "", orig_data, > + ext4_quota_mode(sb)); > > if (es->s_error_count) > mod_timer(&sbi->s_err_report, jiffies + 300*HZ); /* 5 minutes */ > @@ -5979,7 +5995,8 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data) > */ > *flags = (*flags & ~vfs_flags) | (sb->s_flags & vfs_flags); > > - ext4_msg(sb, KERN_INFO, "re-mounted. Opts: %s", orig_data); > + ext4_msg(sb, KERN_INFO, "re-mounted. Opts: %s. Quota mode: %s.", > + orig_data, ext4_quota_mode(sb)); > kfree(orig_data); > return 0; > > -- > 2.7.4 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR