{
        ca->dev_idx = dev_idx;
        __set_bit(ca->dev_idx, ca->self.d);
-       scnprintf(ca->name, sizeof(ca->name), "dev-%u", dev_idx);
+
+       if (!ca->name[0])
+               scnprintf(ca->name, sizeof(ca->name), "dev-%u", dev_idx);
 
        ca->fs = c;
        rcu_assign_pointer(c->devs[ca->dev_idx], ca);
        if (ret)
                return ret;
 
+       struct printbuf name = PRINTBUF;
+       prt_bdevname(&name, sb->bdev);
+       strscpy(ca->name, name.buf, sizeof(ca->name));
+       printbuf_exit(&name);
+
        /* Commit: */
        ca->disk_sb = *sb;
        memset(sb, 0, sizeof(*sb));
 
        bch2_dev_sysfs_online(c, ca);
 
-       struct printbuf name = PRINTBUF;
-       prt_bdevname(&name, ca->disk_sb.bdev);
-       strscpy(ca->name, name.buf, sizeof(ca->name));
-       printbuf_exit(&name);
-
        bch2_rebalance_wakeup(c);
        return 0;
 }