btrfs: restore mount option info messages during mount
authorKyoji Ogasawara <sawara04.o@gmail.com>
Tue, 12 Aug 2025 18:00:06 +0000 (03:00 +0900)
committerDavid Sterba <dsterba@suse.com>
Wed, 13 Aug 2025 12:08:45 +0000 (14:08 +0200)
After the fsconfig migration in 6.8, mount option info messages are no
longer displayed during mount operations because btrfs_emit_options() is
only called during remount, not during initial mount.

Fix this by calling btrfs_emit_options() in btrfs_fill_super() after
open_ctree() succeeds. Additionally, prevent log duplication by ensuring
btrfs_check_options() handles validation with warn-level and err-level
messages, while btrfs_emit_options() provides info-level messages.

Fixes: eddb1a433f26 ("btrfs: add reconfigure callback for fs_context")
CC: stable@vger.kernel.org # 6.8+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Kyoji Ogasawara <sawara04.o@gmail.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/super.c

index 768a2532fa4a5711c5d0d7906f0d9acac621351c..8469f36ef0117d50e87ba1f0fda7a25e9ebff15b 100644 (file)
@@ -88,6 +88,9 @@ struct btrfs_fs_context {
        refcount_t refs;
 };
 
+static void btrfs_emit_options(struct btrfs_fs_info *info,
+                              struct btrfs_fs_context *old);
+
 enum {
        Opt_acl,
        Opt_clear_cache,
@@ -698,12 +701,9 @@ bool btrfs_check_options(const struct btrfs_fs_info *info,
 
        if (!test_bit(BTRFS_FS_STATE_REMOUNTING, &info->fs_state)) {
                if (btrfs_raw_test_opt(*mount_opt, SPACE_CACHE)) {
-                       btrfs_info(info, "disk space caching is enabled");
                        btrfs_warn(info,
 "space cache v1 is being deprecated and will be removed in a future release, please use -o space_cache=v2");
                }
-               if (btrfs_raw_test_opt(*mount_opt, FREE_SPACE_TREE))
-                       btrfs_info(info, "using free-space-tree");
        }
 
        return ret;
@@ -980,6 +980,8 @@ static int btrfs_fill_super(struct super_block *sb,
                return ret;
        }
 
+       btrfs_emit_options(fs_info, NULL);
+
        inode = btrfs_iget(BTRFS_FIRST_FREE_OBJECTID, fs_info->fs_root);
        if (IS_ERR(inode)) {
                ret = PTR_ERR(inode);