Ethan Quach wrote: > > > Evan Layton wrote: >> Ethan Quach wrote: >>> >>> Evan Layton wrote: >>>>> >>>>> I don't think you can make this change without the other. >>>>> For the single BE case now, you don't ever process the root >>>>> dataset's snapshots. Maybe just do a simple if/else to call >>>>> either zfs_iter_children/filesystem for the corresponding >>>>> need? >>>>> >>>> >>>> Actually this does work because the zfs_iter_filesystem is only used >>>> for the initial root dataset. >>> >>> Have you tested this? Based on code inspection, I see it only >>> iterating down the root dataset's children *filesystems*, I >>> don't see how the root dataset's snapshots ever get processed. >> >> Yes of course I've tested this. :-) >> >> It iterates the root dataset then inside be_add_children it iterates >> through the root dataset's snapshots and datasets using >> zfs_iter_children. It is this zfs_iter_children call at the end of >> be_add_children which will process the snapshots for the root dataset. > > I don't see how that's possible. Remember, I'm talking about the > *single BE case*.
You're referring to the "beadm list opensolaris" case where we specify the BE name for beadm list, correct? > > For this case, the zhp handle is the root dataset of the BE. > Calling zfs_iter_filesystems(zhp, ...) means it iterates all > children filesystems of that handle, but does not iterate that > handle itself (i.e. the callback, be_add_children_callback() > is never called for the root dataset itself.) I understand what you're getting at and I had originally added a call to "zfs_iter_snapshots(zhp, be_add_children_callback, cb)" to grab the snapshots but it worked the same with or without that in there. > > In your test, if you do a "beadm list -a <bename>" for a BE with > snapshots, do you see snapshots of the BE's root dataset listed? Yes that's correct. I ran that exact command and I do see the snapshots for that BE along with the rest of the info... I'm wondering if there has been a change to beadm such that it never passes the name of the BE to be_list() but instead parses out the data for the specified BE at that end and not in libbe? I don't remember a change like that being made but after a bit more digging that appears to be what's happening and why this is working... -evan > > > > -ethan >
