[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