]> granicus.if.org Git - zfs/blob - tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_conflict.ksh
d5d377b771c27270aba7e5cbe8aca2041ff43b2d
[zfs] / tests / zfs-tests / tests / functional / channel_program / synctask_core / tst.promote_conflict.ksh
1 #!/bin/ksh -p
2 #
3 # This file and its contents are supplied under the terms of the
4 # Common Development and Distribution License ("CDDL"), version 1.0.
5 # You may only use this file in accordance with the terms of version
6 # 1.0 of the CDDL.
7 #
8 # A full copy of the text of the CDDL should have accompanied this
9 # source.  A copy of the CDDL is also available via the Internet at
10 # http://www.illumos.org/license/CDDL.
11 #
12
13 #
14 # Copyright (c) 2016 by Delphix. All rights reserved.
15 #
16
17 . $STF_SUITE/tests/functional/channel_program/channel_common.kshlib
18
19 #
20 # DESCRIPTION:
21 #       Attempting to promote a clone when it shares a snapshot name with
22 #       its parent filesystem should fail and return the name of the
23 #       conflicting snapshot.
24 #
25
26 verify_runnable "global"
27
28 fs=$TESTPOOL/$TESTFS/testchild
29 clone=$TESTPOOL/$TESTFS/testchild_clone
30 snap=promote_conflict_snap
31
32 function cleanup
33 {
34     for to_destroy in $fs $clone; do
35         datasetexists $to_destroy && log_must zfs destroy -R $to_destroy
36     done
37 }
38
39 log_onexit cleanup
40
41 log_must zfs create $fs
42 log_must zfs snapshot $fs@$snap
43 log_must zfs clone $fs@$snap $clone
44 log_must zfs snapshot $clone@$snap
45
46 #
47 # This channel program is expected to return successfully, but fail to execute
48 # the promote command since the snapshot names collide. It returns the error
49 # code and description, which should be EEXIST (17) and the name of the
50 # conflicting snapshot.
51 #
52 log_must_program $TESTPOOL \
53     $ZCP_ROOT/synctask_core/tst.promote_conflict.zcp $clone
54
55 log_pass "Promoting a clone with a conflicting snapshot fails."