Multiple exports(5) lines generated by ZFS's sharenfs property (patch for review)

2024-06-30 Thread Rick Macklem
Hi,

I just put a patch on phabricator (D45814) that adds support for multiple
sets of options for different hosts/networks to the ZFS sharenfs property.
(It is based loosely on a patch in bugzilla PR#147881, now 14 years old.)

I have listed a couple of reviewers, but please feel free to review it as well.
(It will eventually need to become a pull request for OpenZFS, but I'd like
to run it past FreeBSD'ers first.)

The sets are separated by ';'s. One question is whether ';'s separated by
only whitespace should be allowed. If allowed they generate a "default"
exports line that exports the file system to the world with default options,
such as read/write.
The patch currently on phabricator allows this, but I am thinking that it
should not do so.
--> The default case could still be specified as it is now, as a single set
 of options without any ';'s in the sharenfs property.

Thanks in advance for any reviews, rick



Re: Booting in bhyve always sets currdev to ZFS

2024-06-30 Thread Rodney W. Grimes
> On Fri, Jun 28, 2024 at 6:26?PM Rick Macklem  wrote:
> >
> > Hi,
> >
> > I've installed FreeBSD current in a bhvye instance. Everything
> > went ok, with UFS as a root partition.
> > Then I created a zpool in another partition...
> > - Now, every time I boot it I have to
> >   OK set currdev=disk0s1a:
> > to get it to boot.
> >
> > What is the trick to keep ZFS from messing up the boot variables?
> I've been poking around, but haven't learned much.
> I think it is userboot (although there are so many boot programs in /boot,
> I am not 100% sure?) that sets currdev=zfs:example: since it sees there is ZFS
> in a partition on the drive. It is not the boot partition and doesn't have
> any boot stuff in it.
> 
> When I look at userboot, it appears that it always sets userboot_zfs_found
> to 1 whenever userboot_zfs_probe() is called, given that there is a ZFS
> partition with a pool on it. This makes extract_currdev get set to the
> ZFS stuff,
> assuming I am reading the code correctly.
> What I do not understand is why I have not seen this before?
> (Was the a change to building it with USERBOOT_ZFS_SUPPORT done?)
> 
> It seems that userboot_zfs_probe() should check for boot files on the volume
> and not just that a pool exists on the partition, maybe?
> 
> Anyhow, manually setting currdev=disk0s1a: gets around the problem.

You should be able to set that in your ufs partition /boot/loader.conf
file and at least then your not having to drop to the OK prompt and
manually entering this.

There is much magic in boot code that bites, and not just in FreeBSD.
Often assumptions are made that "this" boot code, and "this" OS are
the only things on the disk(s).

The fact that Linux uses a "apple-zfs" uuid, and FreeBSD a "FreeBSD-zfs"
drove me nuts for 2 days until I found this little tid bit.

Zpool import doesnt care, but the boot code does!


-- 
Rod Grimes rgri...@freebsd.org