Will Andrews
2013-07-26 20:33:44 UTC
Hi,
Looking at the Illumos version here.
How can it work that zfsctl_umount_snapshots() removes a snapshot
entry prior to unmounting it?
Shouldn't this unmount (especially if MS_FORCE) release the last hold
on sep->se_root, causing zfsctl_snapshot_inactive() to get called on
it? In that function, there's an assert that it must have removed
(and subsequently freed) the snapshot entry corresponding to the vnode
being inactived.
Even if that's not how it works, how does the snapshot entry get
cleaned up from zfsctl_umount_snapshots() in the success case? Upon
completion, the entry is not visible in the snapdir's AVL tree
anymore, and zfsctl_umount_snapshots() doesn't free it.
Thanks...
--Will.
Looking at the Illumos version here.
How can it work that zfsctl_umount_snapshots() removes a snapshot
entry prior to unmounting it?
Shouldn't this unmount (especially if MS_FORCE) release the last hold
on sep->se_root, causing zfsctl_snapshot_inactive() to get called on
it? In that function, there's an assert that it must have removed
(and subsequently freed) the snapshot entry corresponding to the vnode
being inactived.
Even if that's not how it works, how does the snapshot entry get
cleaned up from zfsctl_umount_snapshots() in the success case? Upon
completion, the entry is not visible in the snapdir's AVL tree
anymore, and zfsctl_umount_snapshots() doesn't free it.
Thanks...
--Will.