diff options
author | Brad Lewis <[email protected]> | 2018-02-08 09:20:33 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-02-08 15:29:14 -0800 |
commit | af0736898669eabe31e47405023c80b9a58e5e6c (patch) | |
tree | 05c127fee11e5e639326d68f10216bd9ca228265 /tests | |
parent | 475eca4908731a87fff1be500ba4d7b011d392e4 (diff) |
OpenZFS 8592 - ZFS channel programs - rollback
Authored by: Brad Lewis <[email protected]>
Reviewed by: Chris Williamson <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Approved by: Robert Mustacchi <[email protected]>
Ported-by: Don Brady <[email protected]>
ZFS channel programs should be able to perform a rollback.
OpenZFS-issue: https://www.illumos.org/issues/8592
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/d46b5ed6
Diffstat (limited to 'tests')
4 files changed, 117 insertions, 3 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 04f0163f3..0320301d2 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -77,8 +77,8 @@ tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit', 'tst.get_number_props', 'tst.get_string_props', 'tst.get_type', 'tst.get_userquota', 'tst.get_written', 'tst.list_children', 'tst.list_clones', 'tst.list_snapshots', 'tst.list_system_props', - 'tst.parse_args_neg','tst.promote_conflict', 'tst.promote_multiple', - 'tst.promote_simple'] + 'tst.parse_args_neg', 'tst.promote_conflict', 'tst.promote_multiple', + 'tst.promote_simple', 'tst.rollback_mult', 'tst.rollback_one'] tags = ['functional', 'channel_program', 'synctask_core'] [tests/functional/chattr] diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am b/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am index cd347472c..29bd68eee 100644 --- a/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am @@ -27,4 +27,6 @@ dist_pkgdata_SCRIPTS = \ tst.promote_conflict.ksh \ tst.promote_conflict.zcp \ tst.promote_multiple.ksh \ - tst.promote_simple.ksh + tst.promote_simple.ksh \ + tst.rollback_mult.ksh \ + tst.rollback_one.ksh diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_mult.ksh b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_mult.ksh new file mode 100755 index 000000000..778abc09d --- /dev/null +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_mult.ksh @@ -0,0 +1,61 @@ +#!/bin/ksh -p +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright (c) 2016, 2017 by Delphix. All rights reserved. +# + +. $STF_SUITE/tests/functional/channel_program/channel_common.kshlib + +verify_runnable "global" +snap1=$TESTPOOL/$TESTFS@$TESTSNAP1 +snap2=$TESTPOOL/$TESTFS@$TESTSNAP2 +fs=$TESTPOOL/$TESTFS +file=$TESTDIR/$TESTFILE0 + +function cleanup +{ + datasetexists $snap1 && log_must zfs destroy $snap1 && \ + log_must rm $file +} + +log_onexit cleanup + +log_must mkfile 128b $file +create_snapshot $TESTPOOL/$TESTFS $TESTSNAP1 +log_must rm $file +create_snapshot $TESTPOOL/$TESTFS $TESTSNAP2 + +log_must snapexists $snap1 +log_must snapexists $snap2 +log_must zfs unmount $fs + +log_must_program $TESTPOOL - $fs $snap2 <<-EOF + arg = ... + fs = arg["argv"][1] + snap = arg["argv"][2] + err = zfs.sync.rollback(fs) + if err == 0 then + err = zfs.sync.destroy(snap) + end + if err == 0 then + err = zfs.sync.rollback(fs) + end + msg = "rolling back " .. fs .. " err=" .. err + return msg +EOF + +log_must zfs mount $fs +log_must [ -f $file ] +log_mustnot snapexists $snap2 + +log_pass "Rolling back snapshot with channel program works." diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_one.ksh b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_one.ksh new file mode 100755 index 000000000..2a8e83913 --- /dev/null +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.rollback_one.ksh @@ -0,0 +1,51 @@ +#!/bin/ksh -p +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright (c) 2016, 2017 by Delphix. All rights reserved. +# + +. $STF_SUITE/tests/functional/channel_program/channel_common.kshlib + +verify_runnable "global" +snap=$TESTPOOL/$TESTFS@$TESTSNAP +fs=$TESTPOOL/$TESTFS +file=$TESTDIR/$TESTFILE0 + +function cleanup +{ + datasetexists $snap && log_must zfs destroy $snap && \ + log_must rm $file + +} + +log_onexit cleanup + +log_must mkfile 128b $file +create_snapshot $TESTPOOL/$TESTFS $TESTSNAP +log_must rm $file + +log_must snapexists $snap +log_must zfs unmount $fs + +log_must_program $TESTPOOL - $fs <<-EOF + arg = ... + fs = arg["argv"][1] + err = zfs.sync.rollback(fs) + msg = "rolling back " .. fs .. " err=" .. err + return msg +EOF + +log_must zfs mount $fs +log_must [ -f $file ] + +log_pass "Rolling back snapshot with channel program works." |