Re: find snapshot parent?

Nikolay Borisov
2019-07-06T16:57:39Z

On 6.07.19 г. 18:53 ч., Ulli Horlacher wrote:
> Is there a standard way to find the path of the subvolume parent of a
> snapshot?
>
> For example:
>
> root@xerus:/test# btrfs sub list /test
> ID 269 gen 9818 top level 5 path tux/test
> ID 1026 gen 9804 top level 1011 path tmp/xx/ss1
> ID 1027 gen 9804 top level 1011 path tmp/xx/ss2
>
> root@xerus:/test# btrfs subvolume show /test/tmp
> /test/tmp
> Name: tmp
> UUID: 5a873eca-9b6c-fc4e-aed5-eb287839d693
> Parent UUID: -
> Received UUID: -
> Creation time: 2019-07-04 00:17:11 +0200
> Subvolume ID: 1011
> Generation: 9813
> Gen at creation: 9749
> Parent ID: 5
> Top level ID: 5
> Flags: -
> Snapshot(s):
> xx/ss1
> xx/ss2
>
> root@xerus:/test# btrfs subvolume show /test/tmp/xx/ss1
> /test/tmp/xx/ss1
> Name: ss1
> UUID: 3641bb81-d1fd-4440-8f29-6f17ff9ec4e1
> Parent UUID: 5a873eca-9b6c-fc4e-aed5-eb287839d693
> Received UUID: -
> Creation time: 2019-07-05 11:13:15 +0200
> Subvolume ID: 1026
> Generation: 9804
> Gen at creation: 9793
> Parent ID: 1011
> Top level ID: 1011
> Flags: readonly
> Snapshot(s):
>
> Must I call "btrfs subvolume show" for every subvolume to find the
> matching Parent ID/UUID or parse the "Snapshot(s)" section?

That seems to be the way, looking at code for the Snapshot(s) section it
iterates every subvolume and checks if its Parent UUID matches the UUID
of the subvolume - if yes it adds that particular subvol (snapshots are
subvolumes with a parent) to the "SNapshot(s)" section.

>
> 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.

>