]> Git Repo - J-linux.git/blobdiff - fs/btrfs/dev-replace.c
HID: hid-sensor-custom: Fix big on-stack allocation in hid_sensor_custom_get_known()
[J-linux.git] / fs / btrfs / dev-replace.c
index 61e58066b5fd2bbd6216e84b58896216d042135f..78696d331639bdab8d2e70c49cb289b2f33e384d 100644 (file)
 #include "volumes.h"
 #include "async-thread.h"
 #include "check-integrity.h"
-#include "rcu-string.h"
 #include "dev-replace.h"
 #include "sysfs.h"
 #include "zoned.h"
 #include "block-group.h"
+#include "fs.h"
+#include "accessors.h"
+#include "scrub.h"
 
 /*
  * Device replace overview
@@ -246,7 +248,6 @@ static int btrfs_init_dev_replace_tgtdev(struct btrfs_fs_info *fs_info,
        struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
        struct btrfs_device *device;
        struct block_device *bdev;
-       struct rcu_string *name;
        u64 devid = BTRFS_DEV_REPLACE_DEVID;
        int ret = 0;
 
@@ -290,19 +291,12 @@ static int btrfs_init_dev_replace_tgtdev(struct btrfs_fs_info *fs_info,
        }
 
 
-       device = btrfs_alloc_device(NULL, &devid, NULL);
+       device = btrfs_alloc_device(NULL, &devid, NULL, device_path);
        if (IS_ERR(device)) {
                ret = PTR_ERR(device);
                goto error;
        }
 
-       name = rcu_string_strdup(device_path, GFP_KERNEL);
-       if (!name) {
-               btrfs_free_device(device);
-               ret = -ENOMEM;
-               goto error;
-       }
-       rcu_assign_pointer(device->name, name);
        ret = lookup_bdev(device_path, &device->devt);
        if (ret)
                goto error;
@@ -456,14 +450,6 @@ out:
        return ret;
 }
 
-static char* btrfs_dev_name(struct btrfs_device *device)
-{
-       if (!device || test_bit(BTRFS_DEV_STATE_MISSING, &device->dev_state))
-               return "<missing disk>";
-       else
-               return rcu_str_deref(device->name);
-}
-
 static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info,
                                    struct btrfs_device *src_dev)
 {
@@ -679,7 +665,7 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
                      "dev_replace from %s (devid %llu) to %s started",
                      btrfs_dev_name(src_device),
                      src_device->devid,
-                     rcu_str_deref(tgt_device->name));
+                     btrfs_dev_name(tgt_device));
 
        /*
         * from now on, the writes to the srcdev are all duplicated to
@@ -938,7 +924,7 @@ static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info,
                                 "btrfs_scrub_dev(%s, %llu, %s) failed %d",
                                 btrfs_dev_name(src_device),
                                 src_device->devid,
-                                rcu_str_deref(tgt_device->name), scrub_ret);
+                                btrfs_dev_name(tgt_device), scrub_ret);
 error:
                up_write(&dev_replace->rwsem);
                mutex_unlock(&fs_info->chunk_mutex);
@@ -956,7 +942,7 @@ error:
                          "dev_replace from %s (devid %llu) to %s finished",
                          btrfs_dev_name(src_device),
                          src_device->devid,
-                         rcu_str_deref(tgt_device->name));
+                         btrfs_dev_name(tgt_device));
        clear_bit(BTRFS_DEV_STATE_REPLACE_TGT, &tgt_device->dev_state);
        tgt_device->devid = src_device->devid;
        src_device->devid = BTRFS_DEV_REPLACE_DEVID;
This page took 0.04036 seconds and 4 git commands to generate.