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