Here's a hypothetical setup on a recent linux kernel:
/dev/sda1 is formatted as btrfs
I then run the following to make two subvolumes on the the root of /dev/sda1:
$ mount /dev/sda1 /mnt
$ btrfs subvolume create /mnt/a
$ btrfs subvolume create /mnt/b
$ umount /mnt
Now I wish to mount both those subvolumes at the same time on two different mount points:
$ mount -o subvol=a /dev/sda1 /a
$ mount -o subvol=b /dev/sda1 /b
Here's the problem. I tried this with a file as block device (using loop) and it worked fine (at least for touching two files in each). However, after installing a complete system, putting the root in one subvolume, and the home directory in another, mounting both at boot, I got an error telling me that the underlying device was "write protected" and at first attempt to read the home directory content led to a kernel crash.
I'd like to know if what I want to do (mounting a single block device more than once with different mount options) is actually allowed by btrfs or in general by the os.
Best Answer
You could define the subvolume a that should act as root as default.
in this case it will automatically be mounted instead of the btrfs root.
Assuming your btrfs tree looks like this
/
|
|----a (subvolume containing / directory)
|
|----b (subvolume containing home directory)
in order to set a as default:
now you can mount your btrfs filesystem and then the subvolume b