In message <20250614062906.169ea...@slippy.cwsent.com>, Cy Schubert writes:
> In message <202506131548.55dfmqnu004...@gitrepo.freebsd.org>, Warner Losh 
> write
> s:
> > The branch main has been updated by imp:
> >
> > URL: https://cgit.FreeBSD.org/src/commit/?id=900bc0206348a439b3a0625a7239cb
> 87
> > a2dc27c5
> >
> > commit 900bc0206348a439b3a0625a7239cb87a2dc27c5
> > Author:     Siva Mahadevan <m...@svmhdvn.name>
> > AuthorDate: 2025-03-14 15:52:12 +0000
> > Commit:     Warner Losh <i...@freebsd.org>
> > CommitDate: 2025-06-13 15:47:25 +0000
> >
> >     rc.d/zpool: change mountcritlocal dep from BEFORE to REQUIRE
> >     
> >     In cases where the `/boot` directory is mounted from a different disk,
> >     `/boot/zfs/zpool.cache` will not be found during a `rc.d/zpool`
> >     run. This is because `/etc/fstab` mounts are mounted in
> >     `rc.d/mountcritlocal`, which currently runs AFTER (i.e. `REQUIRE:`)
> >     `rc.d/zpool`.
> >     
> >     This change swaps the `rcorder` of `rc.d/zpool`'s dependency on
> >     `mountcritlocal` from `BEFORE:` to `REQUIRE:`. This will ensure that
> >     `/boot` (or even `/etc/` in some configurations) to be visible while
> >     searching for `zpool.cache`.
> >     
> >     Reviewed by: imp
> >     Pull Request: https://github.com/freebsd/freebsd-src/pull/1614
> >     Closes: https://github.com/freebsd/freebsd-src/pull/1614
> > ---
> >  libexec/rc/rc.d/zpool | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/libexec/rc/rc.d/zpool b/libexec/rc/rc.d/zpool
> > index 94e107bd9ae0..63f040ad122b 100755
> > --- a/libexec/rc/rc.d/zpool
> > +++ b/libexec/rc/rc.d/zpool
> > @@ -3,8 +3,7 @@
> >  #
> >  
> >  # PROVIDE: zpool
> > -# REQUIRE: hostid disks
> > -# BEFORE: mountcritlocal
> > +# REQUIRE: hostid disks mountcritlocal
> >  # KEYWORD: nojail
> >  
> >  . /etc/rc.subr
> >
>
> This causes systems which boot off UFS with ZFS to fail boot. The machine 
> drops into single user until one can /etc/rc.d/zpool start and hit 
> control-d to continue the boot.
>
> The reason this fails is /etc/fstab with legacy ZFS will no longer boot 
> into multiuser.
>
> slippy$ grep zfs /etc/fstab | head
> # tank/usr/lib/debug/amd64      /usr/lib/debug          zfs     rw,noatime  
>     0 0
> tank/sfw/modules        /boot/modules           zfs     rw,noatime      0 0
> tank/sfw/local  /usr/local              zfs     rw,noatime      0 0
> tank/sfw/compat /usr/compat             zfs     rw,noatime      0 0
> tank/sfw/var/lib        /var/lib                zfs     rw,noatime      0 0
> tank/sfw/var/db/pkg     /var/db/pkg             zfs     rw,noatime      0 0
> tank/sfw/var/db/ports   /var/db/ports           zfs     rw,noatime      0 0
> tank/var/db/mysql       /var/db/mysql           zfs     rw,noatime      0 0
> tank/db/pgsql           /var/db/postgres        zfs     rw,noatime      0 0
> tank/var/db/local       /var/db/local           zfs     rw,noatime      0 0
> slippy$ 
>
> Please revert this.

I left this comment in the pull request and reopened it.

This causes systems with ZFS legacy filesystems, those specified in 
/etc/fstab to fail to enter multi-user because mountcritlocal cannot find 
fstyp zfs.

BTW, this is the reason I specified BEFORE: mountcritlocal when I created 
this rc script.


-- 
Cheers,
Cy Schubert <cy.schub...@cschubert.com>
FreeBSD UNIX:  <c...@freebsd.org>   Web:  https://FreeBSD.org
NTP:           <c...@nwtime.org>    Web:  https://nwtime.org

                        e**(i*pi)+1=0



Reply via email to