svn commit: r339994 - head/lib/libbe
Kyle Evans
kevans at FreeBSD.org
Thu Nov 1 14:00:57 UTC 2018
Author: kevans
Date: Thu Nov 1 14:00:56 2018
New Revision: 339994
URL: https://svnweb.freebsd.org/changeset/base/339994
Log:
libbe(3): Don't promote non-cloned BEs
Most easily reproducible by attempting to activate the currently activated
BE, one would get a "not a cloned filesystem" error instead of success or a
sane message.
PR: 232488
MFC after: 3 days
Modified:
head/lib/libbe/be.c
Modified: head/lib/libbe/be.c
==============================================================================
--- head/lib/libbe/be.c Thu Nov 1 13:29:55 2018 (r339993)
+++ head/lib/libbe/be.c Thu Nov 1 14:00:56 2018 (r339994)
@@ -928,7 +928,8 @@ be_activate(libbe_handle_t *lbh, const char *bootenv,
{
char be_path[BE_MAXPATHLEN];
char buf[BE_MAXPATHLEN];
- nvlist_t *config, *vdevs;
+ nvlist_t *config, *dsprops, *vdevs;
+ char *origin;
uint64_t pool_guid;
zfs_handle_t *zhp;
int err;
@@ -969,7 +970,18 @@ be_activate(libbe_handle_t *lbh, const char *bootenv,
if (zhp == NULL)
return (-1);
- err = zfs_promote(zhp);
+ if (be_prop_list_alloc(&dsprops) != 0)
+ return (-1);
+
+ if (be_get_dataset_props(lbh, be_path, dsprops) != 0) {
+ nvlist_free(dsprops);
+ return (-1);
+ }
+
+ if (nvlist_lookup_string(dsprops, "origin", &origin) == 0)
+ err = zfs_promote(zhp);
+ nvlist_free(dsprops);
+
zfs_close(zhp);
if (err)
More information about the svn-src-all
mailing list