]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
btrfs: qgroup: show more meaningful qgroup_rescan_init error message
authorQu Wenruo <wqu@suse.com>
Wed, 2 May 2018 05:28:03 +0000 (13:28 +0800)
committerDavid Sterba <dsterba@suse.com>
Wed, 30 May 2018 14:46:43 +0000 (16:46 +0200)
Error message from qgroup_rescan_init() mostly looks like:

  BTRFS info (device nvme0n1p1): qgroup_rescan_init failed with -115

Which is far from meaningful, and sometimes confusing as for above
-EINPROGRESS it's mostly (despite the init race) harmless, but sometimes
it can also indicate problem if the return value is -EINVAL.

Change it to some more meaningful messages like:

  BTRFS info (device nvme0n1p1): qgroup rescan is already in progress

And

  BTRFS err(device nvme0n1p1): qgroup rescan init failed, qgroup is not enabled

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
[ update the messages and level ]
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/qgroup.c

index 457219d6a16b6b7ced8c4a1993123c7846377bc5..1874a6d2e6f5422c809759d0ca29e9bb973826bb 100644 (file)
@@ -2782,26 +2782,36 @@ qgroup_rescan_init(struct btrfs_fs_info *fs_info, u64 progress_objectid,
 {
        int ret = 0;
 
-       if (!init_flags &&
-           (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN) ||
-            !(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_ON))) {
-               ret = -EINVAL;
-               goto err;
+       if (!init_flags) {
+               /* we're resuming qgroup rescan at mount time */
+               if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN))
+                       btrfs_warn(fs_info,
+                       "qgroup rescan init failed, qgroup is not enabled");
+               else if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_ON))
+                       btrfs_warn(fs_info,
+                       "qgroup rescan init failed, qgroup rescan is not queued");
+               return -EINVAL;
        }
 
        mutex_lock(&fs_info->qgroup_rescan_lock);
        spin_lock(&fs_info->qgroup_lock);
 
        if (init_flags) {
-               if (fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN)
+               if (fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN) {
+                       btrfs_warn(fs_info,
+                                  "qgroup rescan is already in progress");
                        ret = -EINPROGRESS;
-               else if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_ON))
+               } else if (!(fs_info->qgroup_flags &
+                            BTRFS_QGROUP_STATUS_FLAG_ON)) {
+                       btrfs_warn(fs_info,
+                       "qgroup rescan init failed, qgroup is not enabled");
                        ret = -EINVAL;
+               }
 
                if (ret) {
                        spin_unlock(&fs_info->qgroup_lock);
                        mutex_unlock(&fs_info->qgroup_rescan_lock);
-                       goto err;
+                       return ret;
                }
                fs_info->qgroup_flags |= BTRFS_QGROUP_STATUS_FLAG_RESCAN;
        }
@@ -2820,13 +2830,6 @@ qgroup_rescan_init(struct btrfs_fs_info *fs_info, u64 progress_objectid,
        btrfs_init_work(&fs_info->qgroup_rescan_work,
                        btrfs_qgroup_rescan_helper,
                        btrfs_qgroup_rescan_worker, NULL, NULL);
-
-       if (ret) {
-err:
-               btrfs_info(fs_info, "qgroup_rescan_init failed with %d", ret);
-               return ret;
-       }
-
        return 0;
 }