it is based on snaphot's name.
But also
Similar answer to the "zfs send -R", it is based on snaphot's name.
So, any new datasets or zVolumes that are created after the snapshot was created, won't be considered for the replication.
Note the inconsistency in your answer - name? or creation timestamp? (or something else?) No criticism, but thats what I'm trying to clarify. It seems obvious that name and date match up, but it's really important if we might zfs rename datasets and snapshots, or delete intermediate ones it might have needed in order to trace "descendants", or inadvertently break internal linkages it might use when we move/rename.
CONCRETE EXAMPLE:
When a dataset or snapshot is renamed, is that technically, sufficient by itself to totally create/destroy the "child" relationship?
Example (contorted I know!) to test the point:
Create pool, create pool/dataset1, create pool/dataset2
Create snapshots pool/dataset1@snap1, snap2, snap3 at daily intervals while working
Wait a week, and create snapshots pool/dataset2@snap4, snap5, snap6 at daily intervals also while working
Now...
Rename pool/dataset2 --> pool/dataset1/dataset2
Rename pool/dataset1/dataset2@snap5 --> pool/dataset1/dataset2@snap2
Finally, for good measure...
Take a recursive snapshot pool/dataset1/dataset2@snap7
Is p
ool/dataset1/dataset2@snap2 now considered in all ways a child snapshot of
pool/dataset1@snap2, as if they were snapped by the same
zfs snap -r pool/dataset1 command?
Will all
zfs/zpool -R/-r options treat it that way?
If I
zfs send -R pool/dataset1@snap2 will snap4 appear in the replication stream because its a previous snap of the now-renamed snap2?
In brief, ZFS is so fluid about rename/move logical relationships, that I need to check technically if zfs uses txg, timestamp, or just path/snap textual name internally, when enumerating what it considers relevant datasets and snaps as a result of -R/-r in its various commands.