Hello everyone,
The btrfs unstable git trees now have a new disk format. The changes
include:
* Yan Zheng''s seed filesystem support. This allows you to create a
readonly image and have all writes directed to other devices
* Subvolumes and snapshots can now live anywhere in the directory tree.
The awkward ''default'' subvolume is gone, and the tree of tree
roots is
no longer visible when you mount -o subvol=., which is now the same as
mounting without any options.
New subvolumes can be linked anywhere in the tree, btrfsctl -S creates
subvols now, and btrfsctl -s creates snapshots.
btrfsctl -S subvol_name subvol_location
btrfsctl -s snapshot_location subvol_to_snapshot
Snapshot creation is not recursive, so for example:
mkfs.btrfs /dev/sdb
mount /dev/sdb /mnt
btrfsctl -S vol1 /mnt
btrfsctl -S vol2 /mnt/vol1
touch /mnt/vol1/vol2/some_file
Now we have two subvolumes, and some_file exists inside of vol2.
btrfsctl -s /mnt/snap /mnt/vol1
Now we have a snapshot of vol1 named /mnt/snap. If we do a find
under /mnt/snap:
# find /mnt/snap
/mnt/snap
/mnt/snap/vol2
/mnt/snap/vol2/some_file
We see some_file under vol2. Since vol2 is a different subvolume, and
vol1 just has a pointer to that subvolume, both snap and vol1 point to
the latest vol2.
# rm /mnt/snap/vol2/some_file
# find /mnt/vol1
/mnt/vol1
/mnt/vol1/vol2
some_file disappears. The disk format has extra indexing so that
snapshots can be done recursively in an efficient manner, but the
current code does not implement that.
Those indexes are used by the current code to try and prevent directory
loops when snapshots are created. For example it would refuse to create
a snapshot of /mnt under /mnt/vol1.
I''ll talk with Christoph about auto bind mounting subvols and snapshots
into the directory tree instead of the current code. But, this is a
good start and it should have enough disk format indexing to be flexible
over the long term.
-chris
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html