[OmniOS-discuss] How do non-rpool ZFS filesystems get mounted?
Chris Siebenmann
cks at cs.toronto.edu
Wed Mar 5 21:38:09 UTC 2014
It turns out that there is an unpleasant consequence to syseventd being
willing to mount ZFS filesystems for additional pools before the 'zfs
mount -a' has run: you can get unresolvable mount conflicts in some
situations.
Suppose that you have /opt as a separate ZFS filesystem in your
root pool and you also have /opt/bigthing as a ZFS filesystem in
a second pool. You can set this up and everything looks right, but
if you reboot and syseventd beats 'zfs mount -a' for whatever reasons,
you get an explosion:
- we start with no additional filesystems mounted, including /opt
- syseventd grabs the second pool, starts mounting things, and
mounts /opt/bigthing on the *bare* root filesystem, making /opt
(if necessary) in the process.
- 'zfs mount -a' reaches /opt and attempts to mount it. However,
because syseventd has already mounted /opt/bigthing, /opt is not
empty. FAILURE.
As far as I can tell there is no particularly good cure for this. To
me it really looks like syseventd should either not be started before
fs-local (although I don't know if anything breaks if its startup is
deferred) or that it should not be mounting ZFS filesystems (although I
can half-see the attraction of it doing so).
- cks
More information about the OmniOS-discuss
mailing list