FreeBSD Bugzilla – Attachment 199243 Details for
Bug 233178
FreeBSD 12.0-BETA - bectl create NEWBE - multiple error messages instead of one
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
only call set_error() when an error is first encountered.
libbe-error.diff (text/plain), 7.53 KB, created by
Robert Wing
on 2018-11-14 19:26:14 UTC
(
hide
)
Description:
only call set_error() when an error is first encountered.
Filename:
MIME Type:
Creator:
Robert Wing
Created:
2018-11-14 19:26:14 UTC
Size:
7.53 KB
patch
obsolete
>diff --git a/lib/libbe/be.c b/lib/libbe/be.c >index 540fe44ea..b0ee8ea53 100644 >--- a/lib/libbe/be.c >+++ b/lib/libbe/be.c >@@ -271,7 +271,7 @@ be_snapshot(libbe_handle_t *lbh, const char *source, const char *snap_name, > be_root_concat(lbh, source, buf); > > if ((err = be_exists(lbh, buf)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if (snap_name != NULL) { > if (strlcat(buf, "@", sizeof(buf)) >= sizeof(buf)) >@@ -325,7 +325,7 @@ be_create(libbe_handle_t *lbh, const char *name) > > err = be_create_from_existing(lbh, name, be_active_path(lbh)); > >- return (set_error(lbh, err)); >+ return err; > } > > >@@ -377,7 +377,7 @@ be_deep_clone(zfs_handle_t *ds, void *data) > isdc = (struct libbe_deep_clone *)data; > dspath = zfs_get_name(ds); > if ((dsname = strrchr(dspath, '/')) == NULL) >- return (BE_ERR_UNKNOWN); >+ return (set_error(isdc->lbh, BE_ERR_UNKNOWN)); > dsname++; > > if (isdc->bename == NULL) >@@ -439,14 +439,14 @@ be_create_from_existing_snap(libbe_handle_t *lbh, const char *name, > struct libbe_deep_clone sdc; > > if ((err = be_validate_name(lbh, name)) != 0) >- return (set_error(lbh, err)); >+ return err; > if ((err = be_root_concat(lbh, snap, snap_path)) != 0) >- return (set_error(lbh, err)); >+ return err; > if ((err = be_validate_snap(lbh, snap_path)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if ((err = be_root_concat(lbh, name, be_path)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if ((bename = strrchr(name, '/')) == NULL) > bename = name; >@@ -473,7 +473,7 @@ be_create_from_existing_snap(libbe_handle_t *lbh, const char *name, > err = be_deep_clone(parent_hdl, &sdc); > > free(parentname); >- return (set_error(lbh, err)); >+ return err; > } > > >@@ -487,11 +487,11 @@ be_create_from_existing(libbe_handle_t *lbh, const char *name, const char *old) > char buf[BE_MAXPATHLEN]; > > if ((err = be_snapshot(lbh, old, NULL, true, (char *)&buf)) != 0) >- return (set_error(lbh, err)); >+ return err; > > err = be_create_from_existing_snap(lbh, name, (char *)buf); > >- return (set_error(lbh, err)); >+ return err; > } > > >@@ -509,22 +509,22 @@ be_validate_snap(libbe_handle_t *lbh, const char *snap_name) > int err = BE_ERR_SUCCESS; > > if (strlen(snap_name) >= BE_MAXPATHLEN) >- return (BE_ERR_PATHLEN); >+ return (set_error(lbh, BE_ERR_PATHLEN)); > > if (!zfs_dataset_exists(lbh->lzh, snap_name, > ZFS_TYPE_SNAPSHOT)) >- return (BE_ERR_NOENT); >+ return (set_error(lbh, BE_ERR_NOENT)); > > strlcpy(buf, snap_name, sizeof(buf)); > > /* Find the base filesystem of the snapshot */ > if ((delim_pos = strchr(buf, '@')) == NULL) >- return (BE_ERR_INVALIDNAME); >+ return (set_error(lbh, BE_ERR_INVALIDNAME)); > *delim_pos = '\0'; > > if ((zfs_hdl = > zfs_open(lbh->lzh, buf, ZFS_TYPE_DATASET)) == NULL) >- return (BE_ERR_NOORIGIN); >+ return (set_error(lbh, BE_ERR_NOORIGIN)); > > if ((err = zfs_prop_get(zfs_hdl, ZFS_PROP_MOUNTPOINT, buf, > sizeof(buf), NULL, NULL, 0, 1)) != 0) >@@ -535,7 +535,7 @@ be_validate_snap(libbe_handle_t *lbh, const char *snap_name) > > zfs_close(zfs_hdl); > >- return (err); >+ return (set_error(lbh, err)); > } > > >@@ -558,20 +558,20 @@ be_root_concat(libbe_handle_t *lbh, const char *name, char *result) > /* Act idempotently; return be name if it is already a full path */ > if (strrchr(name, '/') != NULL) { > if (strstr(name, lbh->root) != name) >- return (BE_ERR_INVALIDNAME); >+ return (set_error(lbh, BE_ERR_INVALIDNAME)); > > if (name_len >= BE_MAXPATHLEN) >- return (BE_ERR_PATHLEN); >+ return (set_error(lbh, BE_ERR_PATHLEN)); > > strlcpy(result, name, BE_MAXPATHLEN); >- return (BE_ERR_SUCCESS); >+ return (set_error(lbh, BE_ERR_SUCCESS)); > } else if (name_len + root_len + 1 < BE_MAXPATHLEN) { > snprintf(result, BE_MAXPATHLEN, "%s/%s", lbh->root, > name); >- return (BE_ERR_SUCCESS); >+ return (set_error(lbh, BE_ERR_SUCCESS)); > } > >- return (BE_ERR_PATHLEN); >+ return (set_error(lbh, BE_ERR_PATHLEN)); > } > > >@@ -588,7 +588,7 @@ be_validate_name(libbe_handle_t *lbh, const char *name) > char c = *(name++); > if (isalnum(c) || (c == '-') || (c == '_') || (c == '.')) > continue; >- return (BE_ERR_INVALIDNAME); >+ return (set_error(lbh, BE_ERR_INVALIDNAME)); > } > > /* >@@ -596,8 +596,8 @@ be_validate_name(libbe_handle_t *lbh, const char *name) > * not exceed the maximum length of a dataset, i.e. MAXNAMELEN. > */ > if (strlen(lbh->root) + 1 + strlen(name) > MAXNAMELEN) >- return (BE_ERR_PATHLEN); >- return (BE_ERR_SUCCESS); >+ return (set_error(lbh, BE_ERR_PATHLEN)); >+ return (set_error(lbh, BE_ERR_SUCCESS)); > } > > >@@ -617,11 +617,11 @@ be_rename(libbe_handle_t *lbh, const char *old, const char *new) > * do so here. > */ > if ((err = be_validate_name(lbh, new)) != 0) >- return (set_error(lbh, err)); >+ return err; > if ((err = be_root_concat(lbh, old, full_old)) != 0) >- return (set_error(lbh, err)); >+ return err; > if ((err = be_root_concat(lbh, new, full_new)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if (!zfs_dataset_exists(lbh->lzh, full_old, ZFS_TYPE_DATASET)) > return (set_error(lbh, BE_ERR_NOENT)); >@@ -657,7 +657,7 @@ be_export(libbe_handle_t *lbh, const char *bootenv, int fd) > > if ((err = be_snapshot(lbh, bootenv, NULL, true, snap_name)) != 0) > /* Use the error set by be_snapshot */ >- return (err); >+ return err; > > be_root_concat(lbh, snap_name, buf); > >@@ -667,7 +667,7 @@ be_export(libbe_handle_t *lbh, const char *bootenv, int fd) > err = zfs_send_one(zfs, NULL, fd, 0); > zfs_close(zfs); > >- return (err); >+ return (set_error(lbh, err)); > } > > >@@ -953,7 +953,7 @@ be_activate(libbe_handle_t *lbh, const char *bootenv, bool temporary) > > /* Note: be_exists fails if mountpoint is not / */ > if ((err = be_exists(lbh, be_path)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if (temporary) { > config = zpool_get_config(lbh->active_phandle, NULL); >diff --git a/lib/libbe/be_access.c b/lib/libbe/be_access.c >index 328326f71..c284db15f 100644 >--- a/lib/libbe/be_access.c >+++ b/lib/libbe/be_access.c >@@ -112,10 +112,10 @@ be_mount(libbe_handle_t *lbh, char *bootenv, char *mountpoint, int flags, > int err; > > if ((err = be_root_concat(lbh, bootenv, be)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if ((err = be_exists(lbh, bootenv)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if (is_mounted(lbh->lzh, be, NULL)) > return (set_error(lbh, BE_ERR_MOUNTED)); >@@ -169,7 +169,7 @@ be_unmount(libbe_handle_t *lbh, char *bootenv, int flags) > char *mntpath; > > if ((err = be_root_concat(lbh, bootenv, be)) != 0) >- return (set_error(lbh, err)); >+ return err; > > if ((mntsize = getmntinfo(&mntbuf, MNT_NOWAIT)) == 0) { > if (errno == EIO) >diff --git a/lib/libbe/be_info.c b/lib/libbe/be_info.c >index dba718cba..f4b60be76 100644 >--- a/lib/libbe/be_info.c >+++ b/lib/libbe/be_info.c >@@ -296,23 +296,23 @@ be_exists(libbe_handle_t *lbh, char *be) > be_root_concat(lbh, be, buf); > > if (!zfs_dataset_exists(lbh->lzh, buf, ZFS_TYPE_DATASET)) >- return (BE_ERR_NOENT); >+ return (set_error(lbh, BE_ERR_NOENT)); > > /* Also check if it's mounted at / */ > if (be_prop_list_alloc(&dsprops) != 0) >- return (BE_ERR_UNKNOWN); >+ return (set_error(lbh, BE_ERR_UNKNOWN)); > > if (be_get_dataset_props(lbh, buf, dsprops) != 0) { > nvlist_free(dsprops); >- return (BE_ERR_UNKNOWN); >+ return (set_error(lbh, BE_ERR_UNKNOWN)); > } > > if (nvlist_lookup_string(dsprops, "mountpoint", &mntpoint) == 0) { > valid = (strcmp(mntpoint, "/") == 0); > nvlist_free(dsprops); >- return (valid ? BE_ERR_SUCCESS : BE_ERR_BADMOUNT); >+ return (set_error(lbh, valid ? BE_ERR_SUCCESS : BE_ERR_BADMOUNT)); > } > > nvlist_free(dsprops); >- return (BE_ERR_BADMOUNT); >+ return (set_error(lbh, BE_ERR_BADMOUNT)); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
rew
:
maintainer-approval?
Actions:
View
|
Diff
Attachments on
bug 233178
: 199243