mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-04 12:52:15 +00:00
libbe(3): Set canmount properly when activating a new BE
The previously activated BE should have canmount=noauto set on it upon activation of the new BE, but we previously did not touch canmount on either old or new BE. PR: 233113 MFC after: 3 days
This commit is contained in:
parent
0e48e06807
commit
8d4ce3586f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=340334
@ -922,6 +922,21 @@ be_set_nextboot(libbe_handle_t *lbh, nvlist_t *config, uint64_t pool_guid,
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Deactivate old BE dataset; currently just sets canmount=noauto
|
||||
*/
|
||||
static int
|
||||
be_deactivate(libbe_handle_t *lbh, const char *ds)
|
||||
{
|
||||
zfs_handle_t *zfs;
|
||||
|
||||
if ((zfs = zfs_open(lbh->lzh, ds, ZFS_TYPE_DATASET)) == NULL)
|
||||
return (1);
|
||||
if (zfs_prop_set(zfs, "canmount", "noauto") != 0)
|
||||
return (1);
|
||||
zfs_close(zfs);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary)
|
||||
@ -961,6 +976,9 @@ be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary)
|
||||
|
||||
return (be_set_nextboot(lbh, vdevs, pool_guid, buf));
|
||||
} else {
|
||||
if (be_deactivate(lbh, lbh->bootfs) != 0)
|
||||
return (-1);
|
||||
|
||||
/* Obtain bootenv zpool */
|
||||
err = zpool_set_prop(lbh->active_phandle, "bootfs", be_path);
|
||||
if (err)
|
||||
|
Loading…
Reference in New Issue
Block a user