summaryrefslogtreecommitdiff
path: root/usr/src/lib/libbe
diff options
context:
space:
mode:
authorJohn Sonnenschein <johns@joyent.com>2012-05-17 18:26:57 +0000
committerJohn Sonnenschein <johns@joyent.com>2012-05-17 18:26:57 +0000
commit04b244dd661c24b510ac22936decfc0972d202d3 (patch)
tree3ebfef98afc303fddf3415d6fba64e8682f495e8 /usr/src/lib/libbe
parenteac250589e41f1b705e1b7427b02b3379aac9f9e (diff)
parenta69187741b83640a90dd8586195456dd50c016a8 (diff)
downloadillumos-joyent-20120517.tar.gz
Merge git.joyent.com:illumos-joyent20120517
Diffstat (limited to 'usr/src/lib/libbe')
-rw-r--r--usr/src/lib/libbe/common/be_mount.c21
-rw-r--r--usr/src/lib/libbe/common/be_rename.c3
2 files changed, 22 insertions, 2 deletions
diff --git a/usr/src/lib/libbe/common/be_mount.c b/usr/src/lib/libbe/common/be_mount.c
index bacb5d4ab4..6c631da67d 100644
--- a/usr/src/lib/libbe/common/be_mount.c
+++ b/usr/src/lib/libbe/common/be_mount.c
@@ -22,6 +22,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
*/
+/*
+ * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
+ */
/*
* System includes
@@ -167,6 +170,8 @@ int
be_unmount(nvlist_t *be_attrs)
{
char *be_name = NULL;
+ char *be_name_mnt = NULL;
+ char *ds = NULL;
uint16_t flags = 0;
int ret = BE_SUCCESS;
@@ -182,6 +187,20 @@ be_unmount(nvlist_t *be_attrs)
return (BE_ERR_INVAL);
}
+ /* Check if we have mountpoint argument instead of BE name */
+ if (be_name[0] == '/') {
+ if ((ds = be_get_ds_from_dir(be_name)) != NULL) {
+ if ((be_name_mnt = strrchr(ds, '/')) != NULL) {
+ free(be_name);
+ be_name = be_name_mnt + 1;
+ }
+ } else {
+ be_print_err(gettext("be_unmount: no datasets mounted "
+ "at '%s'\n"), be_name);
+ return (BE_ERR_INVAL);
+ }
+ }
+
/* Validate original BE name */
if (!be_valid_be_name(be_name)) {
be_print_err(gettext("be_unmount: invalid BE name %s\n"),
@@ -449,7 +468,7 @@ _be_unmount(char *be_name, int flags)
}
ZFS_CLOSE(zhp);
- return (BE_SUCCESS);
+ return (BE_ERR_NOTMOUNTED);
}
/*
diff --git a/usr/src/lib/libbe/common/be_rename.c b/usr/src/lib/libbe/common/be_rename.c
index 1439424d13..dee131834c 100644
--- a/usr/src/lib/libbe/common/be_rename.c
+++ b/usr/src/lib/libbe/common/be_rename.c
@@ -21,6 +21,7 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012 by Delphix. All rights reserved.
*/
#include <assert.h>
@@ -175,7 +176,7 @@ be_rename(nvlist_t *be_attrs)
}
/* Rename of BE's root dataset. */
- if (zfs_rename(zhp, bt.nbe_root_ds, B_FALSE) != 0) {
+ if (zfs_rename(zhp, bt.nbe_root_ds, B_FALSE, B_FALSE) != 0) {
be_print_err(gettext("be_rename: failed to "
"rename dataset (%s): %s\n"), bt.obe_root_ds,
libzfs_error_description(g_zfs));