In at least two circumstances we can think of - rolling back a merge, or deleting a dot - the presence of snapshot mounts causes the operation to fail as the "dataset is busy".
When doing a rollback or a deletion, we should unmount snapshot mounts. For a rollback, we just need mounts of snapshots we're rolling back (snapshots from BEFORE the rollback point don't need unmounting); for deletion, they all need to go.
Whether we keep track of snapshot mounts we create in-memory, or scan the mount table to find them (which is more restart-safe), is open to debate.
In at least two circumstances we can think of - rolling back a merge, or deleting a dot - the presence of snapshot mounts causes the operation to fail as the "dataset is busy".
When doing a rollback or a deletion, we should unmount snapshot mounts. For a rollback, we just need mounts of snapshots we're rolling back (snapshots from BEFORE the rollback point don't need unmounting); for deletion, they all need to go.
Whether we keep track of snapshot mounts we create in-memory, or scan the mount table to find them (which is more restart-safe), is open to debate.