Re: find snapshot parent?

Nikolay Borisov
2019-07-07T06:43:39Z

On 6.07.19 г. 23:43 ч., Ulli Horlacher wrote:
> On Sat 2019-07-06 (19:57), Nikolay Borisov wrote:
>
>>> And how can I see whether /test/tmp/xx/ss1 is a snapshot at all?
>>> Do all snapshots have a "Parent UUID" and regular subvolumes not?
>>
>> Indeed, only snapshots have a Parent UUID.
>
> Not all:
>
> root@xerus:/test# btrfs subvolume snapshot -r /test /test/ss1
> Create a readonly snapshot of '/test' in '/test/ss1'
>
> root@xerus:/test# btrfs subvolume show /test/ss1
> /test/ss1
> Name: ss1
> UUID: 02bd07bc-0bab-3442-96be-40790e1ba9be
> Parent UUID: -
> Received UUID: -
> Creation time: 2019-07-06 22:37:37 +0200
> Subvolume ID: 1036
> Generation: 9824
> Gen at creation: 9824
> Parent ID: 5
> Top level ID: 5
> Flags: readonly
> Snapshot(s):
>
> root@xerus:/test# btrfs subvolume show /test
> /test is toplevel subvolume

This is really odd, looking at create_pending_snapshot the codes :

memcpy(new_root_item->parent_uuid, root->root_item.uuid,
BTRFS_UUID_SIZE);

And that's not conditional on whether the snapshot is read only or not.
So everytime we creata a snapshot it ought to be receiving the parent's
subvolume UUID in its parent_uuid field. And indeed testing with latest misc-next kernel:

root@ubuntu-virtual:~# btrfs subvol create /media/scratch/subvol10
Create subvolume '/media/scratch/subvol10'

root@ubuntu-virtual:~# btrfs subvol snapshot /media/scratch/subvol10/ /media/scratch/snap-subvol10
Create a snapshot of '/media/scratch/subvol10/' in '/media/scratch/snap-subvol10'

root@ubuntu-virtual:~# btrfs subvol snapshot -r /media/scratch/subvol10/ /media/scratch/snap-subvol10-ro
Create a readonly snapshot of '/media/scratch/subvol10/' in '/media/scratch/snap-subvol10-ro'

root@ubuntu-virtual:~# btrfs subvol show /media/scratch/snap-subvol10
snap-subvol10
Name: snap-subvol10
UUID: 8000e96e-5d6e-3c49-a4d3-5e3868ac6972
Parent UUID: 6352b676-fce5-0945-88d9-745a6ae72783
Received UUID: -
Creation time: 2019-07-07 06:40:15 +0000
Subvolume ID: 262
Generation: 17
Gen at creation: 17
Parent ID: 5
Top level ID: 5
Flags: -
Snapshot(s):

root@ubuntu-virtual:~# btrfs subvol show /media/scratch/snap-subvol10-ro/
snap-subvol10-ro
Name: snap-subvol10-ro
UUID: 8964dab3-37b0-fc4e-b891-69323d3aaea0
Parent UUID: 6352b676-fce5-0945-88d9-745a6ae72783
Received UUID: -
Creation time: 2019-07-07 06:40:26 +0000
Subvolume ID: 263
Generation: 18
Gen at creation: 18
Parent ID: 5
Top level ID: 5
Flags: readonly
Snapshot(s):

Note that the related code hasn't change in a long time.