Since btrfs does not do recursive atomic snapshots (which I am ok with),
I am doing this myself. A handful of suggestions/problems came up.
1. Maybe btrfsprogs could gain an option to do recursive non-atomic
snapshots at the userspace level, simply invoking low-level atomic
snapshots one by one?
For the following, the kernel is 3.4.4 with the too-overloaded "0.19"
version of btrfsprogs.
2. Subvolume directories are somewhat special, as you may know.
Only `btrfs sub create/snap` creates them, and they cannot be rmdird.
# btrfs sub list .
ID 256 top level 5 path HEAD
[...]
ID 450 top level 5 path HEAD/woven
ID 451 top level 5 path HEAD/leet
Attempting to snapshot a directory with further subvolumes in it
has the strange effect that directories get created, and do so
with the wrong inode info:
# ls -l HEAD
total 4
drwxr-xr-x 1 root root 18 Aug 18 01:04 .
dr-xr-xr-x 1 root root 218 Aug 23 00:25 ..
drwxr-xr-x 1 root root 66 Aug 17 23:04 leet
drwxrwx--- 1 root root 100 Aug 18 00:53 woven
# btrfs sub snap HEAD today
Create a snapshot of ''HEAD'' in ''./today''
# ls -l today
total 4
drwxr-xr-x 1 root root 18 Aug 18 01:04 .
dr-xr-xr-x 1 root root 228 Aug 23 00:25 ..
drwxr-xr-x 1 root root 0 Aug 23 00:25 leet
drwxr-xr-x 1 root root 0 Aug 23 00:25 woven
3. The creation of these non-special directories in today/
is undesired, because now I need to rmdir them first before
creating the subsnapshots.
# btrfs sub snap HEAD today
Create a snapshot of ''HEAD'' in ''./today''
# btrfs sub snap HEAD/leet today/
Create a snapshot of ''HEAD/leet'' in
''today//leet''
ERROR: cannot snapshot ''HEAD/leet'' - File exists
4. Because today/leet already exists as a non-subvolume root,
btrfsprogs defaults to creating another directory inside it
(unexpected, but ok). However, while doing so, it runs into
some unexplainable ENOTTY:
# btrfs sub snap HEAD today
Create a snapshot of ''HEAD'' in ''./today''
# btrfs sub snap HEAD/leet today/leet
Create a snapshot of ''HEAD/leet'' in
''today/leet/leet''
ERROR: cannot snapshot ''HEAD/leet'' - Inappropriate ioctl for
device
(^failure where success would have been expected)
Successes:
# rmdir today/leet/
# mkdir today/leet
# btrfs sub snap HEAD/leet today/leet
Create a snapshot of ''HEAD/leet'' in
''today/leet/leet''
So today/leet as created by `sub snap HEAD` is also some weird
object.
--
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