aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2018-10-01 14:57:33 +0000
committerKyle Evans <kevans@FreeBSD.org>2018-10-01 14:57:33 +0000
commit0cadc427fdaef4e865262940eb6582f49074573f (patch)
tree2acf0c3e805837feead5f1cb1f126ce09ec41eec /lib
parentc6c770d0419a3e07a5c0514bdfa0c61b24eed161 (diff)
Notes
Diffstat (limited to 'lib')
-rw-r--r--lib/libbe/be.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/lib/libbe/be.c b/lib/libbe/be.c
index c1cdd55825fe..2872abed6dec 100644
--- a/lib/libbe/be.c
+++ b/lib/libbe/be.c
@@ -928,8 +928,9 @@ be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary)
{
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, bool temporary)
} 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);
}