svn commit: r339047 - head/lib/libbe
Kyle Evans
kevans at FreeBSD.org
Mon Oct 1 14:57:34 UTC 2018
Author: kevans
Date: Mon Oct 1 14:57:33 2018
New Revision: 339047
URL: https://svnweb.freebsd.org/changeset/base/339047
Log:
libbe(3): Fix BE activation promoting activated BE
This allows older BEs to be destroyed as they become replaced by a BE
created from them: e.g.
bectl create -e brokenworld fixedworld
bectl activate fixedworld
bectl destroy brokenworld
Submitted by: Shawn Webb
Approved by: re (gjb)
Obtained from: HardenedBSD (5948c0581e)
Modified:
head/lib/libbe/be.c
Modified: head/lib/libbe/be.c
==============================================================================
--- head/lib/libbe/be.c Mon Oct 1 14:47:49 2018 (r339046)
+++ head/lib/libbe/be.c Mon Oct 1 14:57:33 2018 (r339047)
@@ -928,8 +928,9 @@ be_activate(libbe_handle_t *lbh, const char *bootenv,
{
char be_path[BE_MAXPATHLEN];
char buf[BE_MAXPATHLEN];
- uint64_t pool_guid;
nvlist_t *config, *vdevs;
+ uint64_t pool_guid;
+ zfs_handle_t *zhp;
int err;
be_root_concat(lbh, bootenv, be_path);
@@ -961,14 +962,19 @@ be_activate(libbe_handle_t *lbh, const char *bootenv,
} else {
/* Obtain bootenv zpool */
err = zpool_set_prop(lbh->active_phandle, "bootfs", be_path);
+ if (err)
+ return (-1);
- switch (err) {
- case 0:
- return (BE_ERR_SUCCESS);
+ zhp = zfs_open(lbh->lzh, be_path, ZFS_TYPE_FILESYSTEM);
+ if (zhp == NULL)
+ return (-1);
- default:
- /* XXX TODO correct errors */
+ err = zfs_promote(zhp);
+ zfs_close(zhp);
+
+ if (err)
return (-1);
- }
}
+
+ return (BE_ERR_SUCCESS);
}
More information about the svn-src-all
mailing list