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)); }