btrfs: output human readable space info flag
authorQu Wenruo <wqu@suse.com>
Thu, 25 Aug 2022 07:09:09 +0000 (15:09 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 26 Sep 2022 10:27:59 +0000 (12:27 +0200)
For btrfs_space_info, its flags has only 4 possible values:

- BTRFS_BLOCK_GROUP_SYSTEM
- BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_DATA
- BTRFS_BLOCK_GROUP_METADATA
- BTRFS_BLOCK_GROUP_DATA

Make the output more human readable, now it looks like:

  BTRFS info (device dm-1: state A): space_info METADATA has 251494400 free, is not full

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/space-info.c

index b74bc31..3527276 100644 (file)
@@ -476,18 +476,35 @@ do {                                                                      \
        spin_unlock(&__rsv->lock);                                      \
 } while (0)
 
+static const char *space_info_flag_to_str(const struct btrfs_space_info *space_info)
+{
+       switch (space_info->flags) {
+       case BTRFS_BLOCK_GROUP_SYSTEM:
+               return "SYSTEM";
+       case BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_DATA:
+               return "DATA+METADATA";
+       case BTRFS_BLOCK_GROUP_DATA:
+               return "DATA";
+       case BTRFS_BLOCK_GROUP_METADATA:
+               return "METADATA";
+       default:
+               return "UNKNOWN";
+       }
+}
+
 static void __btrfs_dump_space_info(struct btrfs_fs_info *fs_info,
                                    struct btrfs_space_info *info)
 {
+       const char *flag_str = space_info_flag_to_str(info);
        lockdep_assert_held(&info->lock);
 
        /* The free space could be negative in case of overcommit */
-       btrfs_info(fs_info, "space_info %llu has %lld free, is %sfull",
-                  info->flags,
+       btrfs_info(fs_info, "space_info %s has %lld free, is %sfull",
+                  flag_str,
                   (s64)(info->total_bytes - btrfs_space_info_used(info, true)),
                   info->full ? "" : "not ");
        btrfs_info(fs_info,
-               "space_info total=%llu, used=%llu, pinned=%llu, reserved=%llu, may_use=%llu, readonly=%llu zone_unusable=%llu",
+"space_info total=%llu, used=%llu, pinned=%llu, reserved=%llu, may_use=%llu, readonly=%llu zone_unusable=%llu",
                info->total_bytes, info->bytes_used, info->bytes_pinned,
                info->bytes_reserved, info->bytes_may_use,
                info->bytes_readonly, info->bytes_zone_unusable);