Btrfs: Allow subvolumes and snapshots anywhere in the directory tree
authorChris Mason <chris.mason@oracle.com>
Tue, 18 Nov 2008 02:02:50 +0000 (21:02 -0500)
committerChris Mason <chris.mason@oracle.com>
Tue, 18 Nov 2008 02:02:50 +0000 (21:02 -0500)
commit3de4586c5278a28107030c336956381f69ff7a9d
treed636e3806cd5ecff71927d0300e46526fa23de1a
parent4ce4cb526f67775c1cce3e3fa01c292672ba874e
Btrfs: Allow subvolumes and snapshots anywhere in the directory tree

Before, all snapshots and subvolumes lived in a single flat directory.  This
was awkward and confusing because the single flat directory was only writable
with the ioctls.

This commit changes the ioctls to create subvols and snapshots at any
point in the directory tree.  This requires making separate ioctls for
snapshot and subvol creation instead of a combining them into one.

The subvol ioctl does:

btrfsctl -S subvol_name parent_dir

After the ioctl is done subvol_name lives inside parent_dir.

The snapshot ioctl does:

btrfsctl -s path_for_snapshot root_to_snapshot

path_for_snapshot can be an absolute or relative path.  btrfsctl breaks it up
into directory and basename components.

root_to_snapshot can be any file or directory in the FS.  The snapshot
is taken of the entire root where that file lives.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.h
fs/btrfs/disk-io.c
fs/btrfs/inode.c
fs/btrfs/ioctl.c
fs/btrfs/ioctl.h
fs/btrfs/super.c
fs/btrfs/transaction.c
fs/btrfs/transaction.h