libbe(3): Descend into children of datasets w/ mountpoint=none

These datasets will generally be canmount=noauto,mountpoint=none (e.g.
zroot/var) but have children that may need to be mounted. Instead of
skipping that segment for no good reason, descend.

Submitted by:	Wes Maag
Reported by:	Wes Maag
MFC after:	3 days
This commit is contained in:
Kyle Evans 2019-05-16 02:11:33 +00:00
parent e7e3d5223f
commit 88a950762a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=347640

View File

@ -99,13 +99,12 @@ be_mount_iter(zfs_handle_t *zfs_hdl, void *data)
if (strcmp("none", zfs_mnt) == 0) {
/*
* mountpoint=none; we'll mount it at info->mountpoint assuming
* we're at the root. If we're not at the root... that's less
* than stellar and not entirely sure what to do with that.
* For now, we won't treat it as an error condition -- we just
* won't mount it, and we'll continue on.
* we're at the root. If we're not at the root, we're likely
* at some intermediate dataset (e.g. zroot/var) that will have
* children that may need to be mounted.
*/
if (info->depth > 0)
return (0);
goto skipmount;
snprintf(tmp, BE_MAXPATHLEN, "%s", info->mountpoint);
} else {
@ -136,6 +135,7 @@ be_mount_iter(zfs_handle_t *zfs_hdl, void *data)
if (!info->deepmount)
return (0);
skipmount:
++info->depth;
err = zfs_iter_filesystems(zfs_hdl, be_mount_iter, info);
--info->depth;