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)
commit2fcd3902aa858e108863e4b315b5b7a2cd407500
treea86dfd1d78a577e8d799e90f105ccfdc881dec0a
parent07b500b97fa569e51ff312969810c8bd838a5b88
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