Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20bcd649 authored by Ilya Dryomov's avatar Ilya Dryomov Committed by David Sterba
Browse files

Btrfs: close all bdevs on mount failure



Fix a bug introduced by 20b45077.  We have to return EINVAL on mount
failure, but doing that too early in the sequence leaves all of the
devices opened exclusively.  This also fixes an issue where under some
scenarios only a second mount -o degraded <devices> command would
succeed.

Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
parent 5f524444
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -597,10 +597,8 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
		set_blocksize(bdev, 4096);

		bh = btrfs_read_dev_super(bdev);
		if (!bh) {
			ret = -EINVAL;
		if (!bh)
			goto error_close;
		}

		disk_super = (struct btrfs_super_block *)bh->b_data;
		devid = btrfs_stack_device_id(&disk_super->dev_item);
@@ -655,7 +653,7 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
		continue;
	}
	if (fs_devices->open_devices == 0) {
		ret = -EIO;
		ret = -EINVAL;
		goto out;
	}
	fs_devices->seeding = seeding;