I had time to revisit this. I think the user property thing is the way to go. The installer would just mark the entire pool as a pool that is considered bootable.
kyle@optional:~$ zfs get zsys:bootable rpool
NAME PROPERTY VALUE SOURCE
rpool zsys:bootable - -
kyle@optional:~$ sudo zfs set zsys:bootable=YES rpool
[sudo] password for kyle:
kyle@optional:~$ zfs get zsys:bootable rpool
NAME PROPERTY VALUE SOURCE
rpool zsys:bootable YES local
kyle@optional:~$
So then the grub update script could just check for that property instead of looking for a child dataset that matches some expectation.
I had time to revisit this. I think the user property thing is the way to go. The installer would just mark the entire pool as a pool that is considered bootable.
kyle@optional:~$ zfs get zsys:bootable rpool
NAME PROPERTY VALUE SOURCE
rpool zsys:bootable - -
kyle@optional:~$ sudo zfs set zsys:bootable=YES rpool
[sudo] password for kyle:
kyle@optional:~$ zfs get zsys:bootable rpool
NAME PROPERTY VALUE SOURCE
rpool zsys:bootable YES local
kyle@optional:~$
So then the grub update script could just check for that property instead of looking for a child dataset that matches some expectation.