Re: find snapshot parent?

Nikolay Borisov
2019-07-07T09:12:52Z

On 7.07.19 г. 10:37 ч., Andrei Borzenkov wrote:
> 07.07.2019 9:43, Nikolay Borisov пишет:
>>
>>
>> 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.
>
> Does top level subvolume of btrfs have subvolume UUID at all? How can
> one display it? None of "btrfs subvolume" commands show it.
>
>> 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'
>>
>
> /media/scratch/subvol10 is not top level subvolume.

root@ubuntu-virtual:~# mkfs.btrfs /dev/vdc

root@ubuntu-virtual:~# mount /dev/vdc /media/scratch/

root@ubuntu-virtual:~# btrfs subvolume snapshot /media/scratch/ /media/scratch/snap1
Create a snapshot of '/media/scratch/' in '/media/scratch/snap1'

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

root@ubuntu-virtual:~# btrfs subvol show /media/scratch/
/
Name: <FS_TREE>
UUID: 80633e8d-fa8a-4922-ac0c-b46d7b2e2d81
Parent UUID: -
Received UUID: -
Creation time: 2019-07-07 09:09:15 +0000
Subvolume ID: 5
Generation: 8
Gen at creation: 0
Parent ID: 0
Top level ID: 0
Flags: -
Snapshot(s):
snap1
snap-ro

root@ubuntu-virtual:~# btrfs subvol show /media/scratch/snap1/
snap1
Name: snap1
UUID: df861e02-5f54-a74c-a560-dfa66a80b528
Parent UUID: 80633e8d-fa8a-4922-ac0c-b46d7b2e2d81
Received UUID: -
Creation time: 2019-07-07 09:09:38 +0000
Subvolume ID: 257
Generation: 6
Gen at creation: 6
Parent ID: 5
Top level ID: 5
Flags: -
Snapshot(s):

root@ubuntu-virtual:~# btrfs subvol show /media/scratch/snap-ro/
snap-ro
Name: snap-ro
UUID: f9c1a467-2d8a-2343-9011-a4ad07e701b7
Parent UUID: 80633e8d-fa8a-4922-ac0c-b46d7b2e2d81
Received UUID: -
Creation time: 2019-07-07 09:11:34 +0000
Subvolume ID: 258
Generation: 8
Gen at creation: 8
Parent ID: 5
Top level ID: 5
Flags: readonly
Snapshot(s):

>