Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: Btrfs: fix fiemap bugs with delalloc Btrfs: set FMODE_EXCL in btrfs_device->mode Btrfs: make btrfs_rm_device() fail gracefully Btrfs: Avoid accessing unmapped kernel address Btrfs: Fix BTRFS_IOC_SUBVOL_SETFLAGS ioctl Btrfs: allow balance to explicitly allocate chunks as it relocates Btrfs: put ENOSPC debugging under a mount option
This commit is contained in:
@@ -1338,11 +1338,11 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
|
||||
|
||||
ret = btrfs_shrink_device(device, 0);
|
||||
if (ret)
|
||||
goto error_brelse;
|
||||
goto error_undo;
|
||||
|
||||
ret = btrfs_rm_dev_item(root->fs_info->chunk_root, device);
|
||||
if (ret)
|
||||
goto error_brelse;
|
||||
goto error_undo;
|
||||
|
||||
device->in_fs_metadata = 0;
|
||||
|
||||
@@ -1416,6 +1416,13 @@ out:
|
||||
mutex_unlock(&root->fs_info->volume_mutex);
|
||||
mutex_unlock(&uuid_mutex);
|
||||
return ret;
|
||||
error_undo:
|
||||
if (device->writeable) {
|
||||
list_add(&device->dev_alloc_list,
|
||||
&root->fs_info->fs_devices->alloc_list);
|
||||
root->fs_info->fs_devices->rw_devices++;
|
||||
}
|
||||
goto error_brelse;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1633,7 +1640,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
|
||||
device->dev_root = root->fs_info->dev_root;
|
||||
device->bdev = bdev;
|
||||
device->in_fs_metadata = 1;
|
||||
device->mode = 0;
|
||||
device->mode = FMODE_EXCL;
|
||||
set_blocksize(device->bdev, 4096);
|
||||
|
||||
if (seeding_dev) {
|
||||
|
Reference in New Issue
Block a user