mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
OpenZFS 8592 - ZFS channel programs - rollback
Authored by: Brad Lewis <brad.lewis@delphix.com> Reviewed by: Chris Williamson <chris.williamson@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Robert Mustacchi <rm@joyent.com> Ported-by: Don Brady <don.brady@delphix.com> 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
This commit is contained in:
committed by
Brian Behlendorf
parent
475eca4908
commit
af07368986
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
+61
@@ -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."
|
||||
+51
@@ -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."
|
||||
Reference in New Issue
Block a user