git: ddf5bf4319f6 - stable/13 - libbe: Avoid double printing cloning errors.

From: Warner Losh <imp_at_FreeBSD.org>
Date: Mon, 19 Feb 2024 03:41:48 UTC
The branch stable/13 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=ddf5bf4319f61ccbb7f9e843965df86ac60253df

commit ddf5bf4319f61ccbb7f9e843965df86ac60253df
Author:     John Grafton <john.grafton@gmail.com>
AuthorDate: 2023-03-15 03:14:14 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-02-19 03:02:58 +0000

    libbe: Avoid double printing cloning errors.
    
    be_clone calls be_clone_cb and both call set_error on the return
    error path.  set_error prints the error resulting in a double print.
    be_clone_cb should just return the error code and allow be_clone
    to print it.
    
    PR: 265248
    Reported by: Graham Perrin
    Reviewed by: imp, kevans
    Pull Request: https://github.com/freebsd/freebsd-src/pull/685
    
    (cherry picked from commit 8e933d9c598ec847081c322e7ae9a46bf7897886)
---
 lib/libbe/be.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/libbe/be.c b/lib/libbe/be.c
index cb8ff95c4e07..21dd168b2557 100644
--- a/lib/libbe/be.c
+++ b/lib/libbe/be.c
@@ -754,11 +754,11 @@ be_clone_cb(zfs_handle_t *ds, void *data)
 
 	/* construct the boot environment path from the dataset we're cloning */
 	if (be_get_path(ldc, dspath, be_path, sizeof(be_path)) != BE_ERR_SUCCESS)
-		return (set_error(ldc->lbh, BE_ERR_UNKNOWN));
+		return (BE_ERR_UNKNOWN);
 
 	/* the dataset to be created (i.e. the boot environment) already exists */
 	if (zfs_dataset_exists(ldc->lbh->lzh, be_path, ZFS_TYPE_DATASET))
-		return (set_error(ldc->lbh, BE_ERR_EXISTS));
+		return (BE_ERR_EXISTS);
 
 	/* no snapshot found for this dataset, silently skip it */
 	if (!zfs_dataset_exists(ldc->lbh->lzh, snap_path, ZFS_TYPE_SNAPSHOT))
@@ -766,7 +766,7 @@ be_clone_cb(zfs_handle_t *ds, void *data)
 
 	if ((snap_hdl =
 	    zfs_open(ldc->lbh->lzh, snap_path, ZFS_TYPE_SNAPSHOT)) == NULL)
-		return (set_error(ldc->lbh, BE_ERR_ZFSOPEN));
+		return (BE_ERR_ZFSOPEN);
 
 	nvlist_alloc(&props, NV_UNIQUE_NAME, KM_SLEEP);
 	nvlist_add_string(props, "canmount", "noauto");
@@ -779,7 +779,7 @@ be_clone_cb(zfs_handle_t *ds, void *data)
 		return (-1);
 
 	if ((err = zfs_clone(snap_hdl, be_path, props)) != 0)
-		return (set_error(ldc->lbh, BE_ERR_ZFSCLONE));
+		return (BE_ERR_ZFSCLONE);
 
 	nvlist_free(props);
 	zfs_close(snap_hdl);
@@ -790,7 +790,7 @@ be_clone_cb(zfs_handle_t *ds, void *data)
 		ldc->depth--;
 	}
 
-	return (set_error(ldc->lbh, err));
+	return (err);
 }
 
 /*