]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
btrfs: use dev_t to match device in device_matched
authorAnand Jain <anand.jain@oracle.com>
Wed, 12 Jan 2022 05:06:02 +0000 (13:06 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 14 Mar 2022 12:13:47 +0000 (13:13 +0100)
Commit "btrfs: add device major-minor info in the struct btrfs_device"
saved the device major-minor number in the struct btrfs_device upon
discovering it.

So no need to lookup_bdev() again just match, which means
device_matched() can go away.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index ebe655eb8b4dfef4d2ce69840efa17769f24deea..1e1120ed9f8c698741e8210ca5ab4c2f9ef41604 100644 (file)
@@ -534,45 +534,6 @@ error:
        return ret;
 }
 
-/*
- * Check if the device in the path matches the device in the given struct device.
- *
- * Returns:
- *   true  If it is the same device.
- *   false If it is not the same device or on error.
- */
-static bool device_matched(const struct btrfs_device *device, dev_t dev_new)
-{
-       char *device_name;
-       dev_t dev_old;
-       int ret;
-
-       /*
-        * If we are looking for a device with the matching dev_t, then skip
-        * device without a name (a missing device).
-        */
-       if (!device->name)
-               return false;
-
-       device_name = kzalloc(BTRFS_PATH_NAME_MAX, GFP_KERNEL);
-       if (!device_name)
-               return false;
-
-       rcu_read_lock();
-       scnprintf(device_name, BTRFS_PATH_NAME_MAX, "%s", rcu_str_deref(device->name));
-       rcu_read_unlock();
-
-       ret = lookup_bdev(device_name, &dev_old);
-       kfree(device_name);
-       if (ret)
-               return false;
-
-       if (dev_old == dev_new)
-               return true;
-
-       return false;
-}
-
 /**
  *  Search and remove all stale devices (which are not mounted).
  *  When both inputs are NULL, it will search and release all stale devices.
@@ -604,7 +565,7 @@ static int btrfs_free_stale_devices(dev_t devt, struct btrfs_device *skip_device
                                         &fs_devices->devices, dev_list) {
                        if (skip_device && skip_device == device)
                                continue;
-                       if (devt && !device_matched(device, devt))
+                       if (devt && devt != device->devt)
                                continue;
                        if (fs_devices->opened) {
                                /* for an already deleted device return 0 */