summaryrefslogtreecommitdiffstats
path: root/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2013-08-21 00:04:31 +0000
committerdelphij <delphij@FreeBSD.org>2013-08-21 00:04:31 +0000
commit1b0e7b9e07f0d8a61c4240dc05633e83c63ca643 (patch)
tree5d2b5965abc967c4a8c7cfcf4a65f7382ce302a6 /cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
parentecff4e4b393cc3053645d147e2e24fefb3783ea0 (diff)
downloadFreeBSD-src-1b0e7b9e07f0d8a61c4240dc05633e83c63ca643.zip
FreeBSD-src-1b0e7b9e07f0d8a61c4240dc05633e83c63ca643.tar.gz
MFV r254421:
Illumos ZFS issues: 3996 want a libzfs_core API to rollback to latest snapshot
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c')
-rw-r--r--cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c b/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
index c5c3b0e..6f4b46c 100644
--- a/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
+++ b/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
*/
@@ -628,3 +628,27 @@ out:
free((void*)(uintptr_t)zc.zc_nvlist_dst);
return (error);
}
+
+/*
+ * Roll back this filesystem or volume to its most recent snapshot.
+ * If snapnamebuf is not NULL, it will be filled in with the name
+ * of the most recent snapshot.
+ *
+ * Return 0 on success or an errno on failure.
+ */
+int
+lzc_rollback(const char *fsname, char *snapnamebuf, int snapnamelen)
+{
+ nvlist_t *args;
+ nvlist_t *result;
+ int err;
+
+ args = fnvlist_alloc();
+ err = lzc_ioctl(ZFS_IOC_ROLLBACK, fsname, args, &result);
+ nvlist_free(args);
+ if (err == 0 && snapnamebuf != NULL) {
+ const char *snapname = fnvlist_lookup_string(result, "target");
+ (void) strlcpy(snapnamebuf, snapname, snapnamelen);
+ }
+ return (err);
+}
OpenPOWER on IntegriCloud