aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Grafton <john.grafton@gmail.com>2023-03-15 03:14:14 +0000
committerWarner Losh <imp@FreeBSD.org>2023-03-15 03:15:17 +0000
commit8e933d9c598ec847081c322e7ae9a46bf7897886 (patch)
tree3ce0b477605cb9bed238aaae20666b78be49f0c8
parent0b0ae2e4cd22c21f3c1971b1cfff9893b30d9f6f (diff)
downloadsrc-8e933d9c598ec847081c322e7ae9a46bf7897886.tar.gz
src-8e933d9c598ec847081c322e7ae9a46bf7897886.zip
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
-rw-r--r--lib/libbe/be.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/libbe/be.c b/lib/libbe/be.c
index cc6b8533a8f9..db06bdbb36a8 100644
--- a/lib/libbe/be.c
+++ b/lib/libbe/be.c
@@ -745,11 +745,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))
@@ -757,7 +757,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");
@@ -770,7 +770,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);
@@ -781,7 +781,7 @@ be_clone_cb(zfs_handle_t *ds, void *data)
ldc->depth--;
}
- return (set_error(ldc->lbh, err));
+ return (err);
}
/*