Btrfs: fix error handling in btrfs_get_sb
authorJosef Bacik <josef@redhat.com>
Fri, 22 Oct 2010 19:26:53 +0000 (15:26 -0400)
committerJosef Bacik <josef@redhat.com>
Fri, 22 Oct 2010 19:55:03 +0000 (15:55 -0400)
commit0e78340f3c1fc603e8016c8ac304766bcc65506e
treea86dfd1d78a577e8d799e90f105ccfdc881dec0a
parent8bb8ab2e93f9c3c9453e13be0f37d344a32a3a6d
Btrfs: fix error handling in btrfs_get_sb

If we failed to find the root subvol id, or the subvol=<name>, we would
deactivate the locked super and close the devices.  The problem is at this point
we have gotten the SB all setup, which includes setting super_operations, so
when we'd deactiveate the super, we'd do a close_ctree() which closes the
devices, so we'd end up closing the devices twice.  So if you do something like
this

mount /dev/sda1 /mnt/test1
mount /dev/sda1 /mnt/test2 -o subvol=xxx
umount /mnt/test1

it would blow up (if subvol xxx doesn't exist).  This patch fixes that problem.
Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/super.c