Skip to contentSkip to conversation

Can a snapshot become a parent subvolume when its parent is deleted?

DISCUSSION Marc MERLIN 2 participants 3 messages May 14, 2014 – May 19, 2014 Btrfs file system

lore
Share & tools
lore
#0 lore raw

So, I had btrfs_pool1 that was trashed/lost as discussed here recently.

I did btrfs send btrfs_pool2/root_ro.date | btrfs receive /mnt/btrfs_pool1

Then btrfs subvolume snapshot root_ro.date root

Now, after I delete root_ro.date on btrfs_pool1, shouldn't root become a parent subvolume?

Right now, I have:

legolas:/mnt/btrfs_pool1# btrfs subvolume list -q . 
ID 390 gen 5954 top level 5 parent_uuid faea7df8-d51a-6b4b-994b-887d55267cce path root
legolas:/mnt/btrfs_pool1# btrfs subvolume list  -u .  |grep faea7df8-d51a-6b4b-994b-887d55267cce
legolas:/mnt/btrfs_pool1#

Is it possible not to have a parent?

If so, shouldn't you become a parent at that time?

Thanks,
Marc

Signature · 4 lines
"A mouse is a device used to point at the xterm you want to type in" - A.S.R.
Microsoft is to operating systems ....
                                      .... what McDonalds is to gourmet cooking
Home page: http://marc.merlins.org/                         | PGP 1024R/763BE901
#1 lore raw
Quoted 8 lines · Marc MERLIN

So, I had btrfs_pool1 that was trashed/lost as discussed here recently.

I did btrfs send btrfs_pool2/root_ro.date | btrfs receive /mnt/btrfs_pool1

Then btrfs subvolume snapshot root_ro.date root

Now, after I delete root_ro.date on btrfs_pool1, shouldn't root become a parent subvolume?

There's no explicit hierarchy like this. There's no state "parent" or "child".

If a subvolume is created by snapshotting another subvolume, the new subvolume refers to the uuid of its source as the parent uuid. And the original subvolume, at least in the UI, contains a list of its snapshots but I don't know that this metadata is literally associated with the subvolume rather than inferred from its snapshots, all of which contain the "parent" subvolume's uuid as a parent_uuid.

Quoted 10 lines

Right now, I have:

legolas:/mnt/btrfs_pool1# btrfs subvolume list -q . 
ID 390 gen 5954 top level 5 parent_uuid faea7df8-d51a-6b4b-994b-887d55267cce path root
legolas:/mnt/btrfs_pool1# btrfs subvolume list  -u .  |grep faea7df8-d51a-6b4b-994b-887d55267cce
legolas:/mnt/btrfs_pool1#

Is it possible not to have a parent?

If so, shouldn't you become a parent at that time?

No. The listed subvolume parent_uuid is the subvolume uuid for now deleted subvolume root_ro.date. Even though it's deleted, the subvolume created from it still retains the parent_uuid reference.

If you snapshot root, you could say it "becomes a parent" but it's only a metaphor it's not something that literally happens on disk. All I'm aware of that happens is the new subvolume gets its own uuid and its parent_uuid is set to match the subvolume uuid it was created from.

Chris Murphy

#2 lore raw
Quoted 12 lines · Chris Murphy
Quoted 8 lines · Marc MERLIN

So, I had btrfs_pool1 that was trashed/lost as discussed here recently.

I did btrfs send btrfs_pool2/root_ro.date | btrfs receive /mnt/btrfs_pool1

Then btrfs subvolume snapshot root_ro.date root

Now, after I delete root_ro.date on btrfs_pool1, shouldn't root become a parent subvolume?

Quoted 8 lines

There's no explicit hierarchy like this. There's no state "parent" or "child".

If a subvolume is created by snapshotting another subvolume, the new subvolume refers to the uuid of its source as the parent uuid. And the original subvolume, at least in the UI, contains a list of its snapshots but I don't know that this metadata is literally associated with the subvolume rather than inferred from its snapshots, all of which contain the "parent" subvolume's uuid as a parent_uuid.

Right. So basically the parent UUID can go orphanned, which I found a bit surprising.

Quoted 6 lines
Quoted 6 lines

Right now, I have:

legolas:/mnt/btrfs_pool1# btrfs subvolume list -q . 
ID 390 gen 5954 top level 5 parent_uuid faea7df8-d51a-6b4b-994b-887d55267cce path root
legolas:/mnt/btrfs_pool1# btrfs subvolume list  -u .  |grep faea7df8-d51a-6b4b-994b-887d55267cce
legolas:/mnt/btrfs_pool1#
Quoted 7 lines
Quoted 3 lines

Is it possible not to have a parent?

If so, shouldn't you become a parent at that time?

No. The listed subvolume parent_uuid is the subvolume uuid for now deleted subvolume root_ro.date. Even though it's deleted, the subvolume created from it still retains the parent_uuid reference.

Yep. If you think about daemonized processed that get inherited by init, shouldn't parent-less snapshots change their parent uuid to '-'

Quoted 5 lines

If you snapshot root, you could say it "becomes a parent" but it's only a metaphor it's not something that literally happens on disk. All I'm aware of that happens is the new subvolume gets its own uuid and its parent_uuid is set to match the subvolume uuid it was created from.

You are correct. The blocks don't care who is the parent and child subvolume, they're just references.
But for management purposes by us humans :) it's useful to know what's going on.

Would a developer agree to making parent less subvolumes have their parent become '-'?

Thanks,
Marc

Signature · 4 lines
"A mouse is a device used to point at the xterm you want to type in" - A.S.R.
Microsoft is to operating systems ....
                                      .... what McDonalds is to gourmet cooking
Home page: http://marc.merlins.org/                         | PGP 1024R/763BE901