Btrfs: fix wrong error returned by adding a device
authorLiu Bo <liubo2009@cn.fujitsu.com>
Thu, 10 May 2012 10:10:38 +0000 (18:10 +0800)
committerJosef Bacik <josef@redhat.com>
Wed, 30 May 2012 14:23:34 +0000 (10:23 -0400)
Reproduce:
$ mkfs.btrfs /dev/sdb7
$ mount /dev/sdb7 /mnt/btrfs -o ro
$ btrfs dev add /dev/sdb8 /mnt/btrfs
ERROR: error adding the device '/dev/sdb8' - Invalid argument

Since we mount with readonly options, and /dev/sdb7 is not a seeding one,
a readonly notification is preferred.

Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
Reviewed-by: Josef Bacik <josef@redhat.com>
fs/btrfs/volumes.c

index 1411b99555a4c1f138a6a3bf699842849d2b3e08..48a06d1fc0675cc4ec3e57cac065fad9c4876710 100644 (file)
@@ -1633,7 +1633,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
        int ret = 0;
 
        if ((sb->s_flags & MS_RDONLY) && !root->fs_info->fs_devices->seeding)
-               return -EINVAL;
+               return -EROFS;
 
        bdev = blkdev_get_by_path(device_path, FMODE_WRITE | FMODE_EXCL,
                                  root->fs_info->bdev_holder);