You are not logged in.

#1 2012-07-29 09:36:37

Osiris
Member
Registered: 2003-01-18
Posts: 160
Website

btrfs and subvolumes

Hey!

I recently starting playing with btrfs and subvolume, but it has left me puzzled:

root@horus /mnt # mkfs.btrfs -L test /dev/sdb1

WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label test on /dev/sdb1
        nodesize 4096 leafsize 4096 sectorsize 4096 size 2.73TB
Btrfs Btrfs v0.19
root@horus /mnt # mount /dev/sdb1 test
root@horus /mnt # cd test
root@horus /mnt/test # btrfs subvolume create sv1
Create subvolume './sv1'
root@horus /mnt/test # btrfs subvolume create sv2
Create subvolume './sv2'
root@horus /mnt/test # touch sv1/sv1.file
root@horus /mnt/test # touch sv2/sv2.file
root@horus /mnt/test # btrfs subvolume get-default .
ID 256 top level 5 path sv1
ID 259 top level 5 path sv2

What is the default subvolume now? How can I tell?

root@horus /mnt/test # btrfs subvolume set-default 259 .
root@horus /mnt/test # btrfs subvolume get-default .
ID 256 top level 5 path sv1
ID 259 top level 5 path sv2

Seem to have changed nothing....?

root@horus /mnt/test # cd ..
root@horus /mnt # umount test && mount /dev/sdb1 test
root@horus /mnt # ls test
sv2.file

Ah, sv2 seems to be default, like I had set...

root@horus /mnt # btrfs subvolume set-default 5 test
root@horus /mnt # umount test
root@horus /mnt # mount /dev/sdb1 test
root@horus /mnt # ls test
sv1/  sv2/

Ok, 5 seems to be the root subvolume id. Is it always like that? I remembered to have read it was 0 somewhere? (which makes a kind of more sense for me)

root@horus /mnt # btrfs subvolume set-default 256 test
root@horus /mnt # umount test && mount /dev/sdb1 test
root@horus /mnt # ls test
sv1.file

Fine! But:

root@horus /mnt # btrfs subvolume set-default 0 test
root@horus /mnt # umount test && mount /dev/sdb1 test
root@horus /mnt # ls test
sv1.file

set-default 0 seems to do nothing but does not produce an error either. What about subvolume 0? Still I can do:

root@horus /mnt # umount test
root@horus /mnt # mount -o subvolid=0 /dev/sdb1 test
root@horus /mnt # ls test
sv1/  sv2/

Ok, here 0 as subvolid works. What about subvolid=5?

root@horus /mnt # umount test
root@horus /mnt # mount -o subvolid=5 /dev/sdb1 test
root@horus /mnt # ls test
sv1/  sv2/

Works too.

Sorry for the lengthy posting, but writing this posting has puzzled me even more I was yesterday. I hope someone could shed some light on it.

Thanks!

Last edited by Osiris (2012-07-29 09:40:49)

Offline

Board footer

Powered by FluxBB