summaryrefslogtreecommitdiff
path: root/usr/src/lib/libzfs/common/libzfs_dataset.c
diff options
context:
space:
mode:
authorrm160521 <none@none>2007-12-18 20:11:52 -0800
committerrm160521 <none@none>2007-12-18 20:11:52 -0800
commitb9415e832db4ec89116104788643227b77ed508a (patch)
tree3118be41eea67134e32191af60d67ec4e89f23fe /usr/src/lib/libzfs/common/libzfs_dataset.c
parent1437d1e8ae307af184c4500fb83334921ff5ff4d (diff)
downloadillumos-joyent-b9415e832db4ec89116104788643227b77ed508a.tar.gz
6419176 'zfs rollback <volume@snap>' does not lower reservation (fix lint)
Diffstat (limited to 'usr/src/lib/libzfs/common/libzfs_dataset.c')
-rw-r--r--usr/src/lib/libzfs/common/libzfs_dataset.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/usr/src/lib/libzfs/common/libzfs_dataset.c b/usr/src/lib/libzfs/common/libzfs_dataset.c
index af4956de56..347faa485c 100644
--- a/usr/src/lib/libzfs/common/libzfs_dataset.c
+++ b/usr/src/lib/libzfs/common/libzfs_dataset.c
@@ -3429,7 +3429,8 @@ zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap)
(void) zfs_standard_error_fmt(zhp->zfs_hdl, errno,
dgettext(TEXT_DOMAIN, "cannot rollback '%s'"),
zhp->zfs_name);
- } else if (zhp->zfs_type == ZFS_TYPE_VOLUME) {
+ return (err);
+ }
/*
* For volumes, if the pre-rollback volsize matched the pre-
@@ -3437,16 +3438,18 @@ zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap)
* the reservation property to the post-rollback volsize.
* Make a new handle since the rollback closed the dataset.
*/
- zhp = make_dataset_handle(zhp->zfs_hdl, zhp->zfs_name);
- if (!zhp)
+ if ((zhp->zfs_type == ZFS_TYPE_VOLUME) &&
+ (zhp = make_dataset_handle(zhp->zfs_hdl, zhp->zfs_name))) {
+ if (err = zvol_create_link(zhp->zfs_hdl, zhp->zfs_name)) {
+ zfs_close(zhp);
return (err);
-
+ }
if (restore_resv) {
new_volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE);
if (old_volsize != new_volsize)
- zfs_prop_set_int(zhp, resv_prop, new_volsize);
+ err = zfs_prop_set_int(zhp, resv_prop,
+ new_volsize);
}
- err = zvol_create_link(zhp->zfs_hdl, zhp->zfs_name);
zfs_close(zhp);
}
return (err);