Btrfs: Add support for labels in the super block
authorChris Mason <chris.mason@oracle.com>
Fri, 18 Apr 2008 14:29:49 +0000 (10:29 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:02 +0000 (11:04 -0400)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.h
fs/btrfs/volumes.c

index d119d95..f00c4be 100644 (file)
@@ -247,6 +247,7 @@ struct btrfs_header {
  * room to translate 14 chunks with 3 stripes each.
  */
 #define BTRFS_SYSTEM_CHUNK_ARRAY_SIZE 2048
+#define BTRFS_LABEL_SIZE 256
 
 /*
  * the super block basically lists the main trees of the FS
@@ -276,6 +277,7 @@ struct btrfs_super_block {
        u8 root_level;
        u8 chunk_root_level;
        struct btrfs_dev_item dev_item;
+       char label[BTRFS_LABEL_SIZE];
        u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE];
 } __attribute__ ((__packed__));
 
index cdf0019..93aa36e 100644 (file)
@@ -57,9 +57,7 @@ int btrfs_cleanup_fs_uuids(void)
                        devices_cur = fs_devices->devices.next;
                        dev = list_entry(devices_cur, struct btrfs_device,
                                         dev_list);
-                       printk("uuid cleanup finds %s\n", dev->name);
                        if (dev->bdev) {
-                               printk("closing\n");
                                close_bdev_excl(dev->bdev);
                        }
                        list_del(&dev->dev_list);
@@ -149,7 +147,6 @@ static int device_list_add(const char *path,
        }
        if (fs_devices->lowest_devid > devid) {
                fs_devices->lowest_devid = devid;
-               printk("lowest devid now %Lu\n", devid);
        }
        *fs_devices_ret = fs_devices;
        return 0;
@@ -166,7 +163,6 @@ int btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
                device = list_entry(cur, struct btrfs_device, dev_list);
                if (device->bdev) {
                        close_bdev_excl(device->bdev);
-                       printk("close devices closes %s\n", device->name);
                }
                device->bdev = NULL;
        }
@@ -220,11 +216,9 @@ int btrfs_scan_one_device(const char *path, int flags, void *holder,
 
        mutex_lock(&uuid_mutex);
 
-       printk("scan one opens %s\n", path);
        bdev = open_bdev_excl(path, flags, holder);
 
        if (IS_ERR(bdev)) {
-               printk("open failed\n");
                ret = PTR_ERR(bdev);
                goto error;
        }
@@ -240,13 +234,20 @@ int btrfs_scan_one_device(const char *path, int flags, void *holder,
        disk_super = (struct btrfs_super_block *)bh->b_data;
        if (strncmp((char *)(&disk_super->magic), BTRFS_MAGIC,
            sizeof(disk_super->magic))) {
-               printk("no btrfs found on %s\n", path);
                ret = -EINVAL;
                goto error_brelse;
        }
        devid = le64_to_cpu(disk_super->dev_item.devid);
        transid = btrfs_super_generation(disk_super);
-       printk("found device %Lu transid %Lu on %s\n", devid, transid, path);
+       if (disk_super->label[0])
+               printk("device label %s ", disk_super->label);
+       else {
+               /* FIXME, make a readl uuid parser */
+               printk("device fsid %llx-%llx ",
+                      *(unsigned long long *)disk_super->fsid,
+                      *(unsigned long long *)(disk_super->fsid + 8));
+       }
+       printk("devid %Lu transid %Lu %s\n", devid, transid, path);
        ret = device_list_add(path, disk_super, devid, fs_devices_ret);
 
 error_brelse: