Thread (3 messages) 3 messages, 3 authors, 2016-07-16

Re: Btrfs uuid snapshots: orphaned parent_uuid after deleting intermediate subvol

From: Kai Krakow <hidden>
Date: 2016-07-16 10:18:31

Am Fri, 15 Jul 2016 16:12:51 -0700 (PDT)
schrieb Eric Wheeler [off-list ref]:
Hello all,

If I create three subvolumes like so:

# btrfs subvolume create a
# btrfs subvolume snapshot a b
# btrfs subvolume snapshot b c

I get a parent-child relationship which can be determined like so:

# btrfs subvolume list -uq /home/ |grep [abc]$
parent_uuid - uuid 0e5f473a-d9e5-144a-8f49-1899af7320ad path a
parent_uuid 0e5f473a-d9e5-144a-8f49-1899af7320ad uuid
cb4768eb-98e3-5e4c-935d-14f1b97b0de2 path b parent_uuid
cb4768eb-98e3-5e4c-935d-14f1b97b0de2 uuid
5ee8de35-2bab-d642-b5c2-f619e46f65c2 path c

Now if I delete 'b', the parent_uuid of 'c' doesn't change to point
at 'a':

# btrfs subvolume delete b
# btrfs subvolume list -uq /home/ |grep [abc]$
parent_uuid - uuid 0e5f473a-d9e5-144a-8f49-1899af7320ad path a
parent_uuid cb4768eb-98e3-5e4c-935d-14f1b97b0de2 uuid
5ee8de35-2bab-d642-b5c2-f619e46f65c2 path c
It cannot do that because b may have diverged from a.
Notice that 'c' still points at b's UUID, but 'b' is missing and the 
parent_uuid for 'c' wasn't set to '-' as if it were a root node (like
'a').

Is this an inconsistency?  Child parent_uuid's it be updated on
delete?
I think this is by design. This "missing" UUID is now no longer a file
system tree, it's just referencing blocks different between a and c at
the time of deleting b.
It would be nice to know that 'c' is actually a descendent of 'a',
even after having deleted 'b'.  Is a way to look that up somehow?
Actually it would also be interesting what happens with blocks in
deleted b after the blocks in c are unshared? Are they garbage
collected or do we have some orphan subvolume lying around which you
cannot get rid of?


-- 
Regards,
Kai

Replies to list-only preferred.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help