1dbd5678dSMartin Matuska#!/bin/ksh -p
2dbd5678dSMartin Matuska#
3dbd5678dSMartin Matuska# CDDL HEADER START
4dbd5678dSMartin Matuska#
5dbd5678dSMartin Matuska# The contents of this file are subject to the terms of the
6dbd5678dSMartin Matuska# Common Development and Distribution License (the "License").
7dbd5678dSMartin Matuska# You may not use this file except in compliance with the License.
8dbd5678dSMartin Matuska#
9dbd5678dSMartin Matuska# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*2a58b312SMartin Matuska# or https://opensource.org/licenses/CDDL-1.0.
11dbd5678dSMartin Matuska# See the License for the specific language governing permissions
12dbd5678dSMartin Matuska# and limitations under the License.
13dbd5678dSMartin Matuska#
14dbd5678dSMartin Matuska# When distributing Covered Code, include this CDDL HEADER in each
15dbd5678dSMartin Matuska# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16dbd5678dSMartin Matuska# If applicable, add the following below this CDDL HEADER, with the
17dbd5678dSMartin Matuska# fields enclosed by brackets "[]" replaced with your own identifying
18dbd5678dSMartin Matuska# information: Portions Copyright [yyyy] [name of copyright owner]
19dbd5678dSMartin Matuska#
20dbd5678dSMartin Matuska# CDDL HEADER END
21dbd5678dSMartin Matuska#
22dbd5678dSMartin Matuska
23dbd5678dSMartin Matuska#
24dbd5678dSMartin Matuska# Copyright (C) 2019 Aleksa Sarai <cyphar@cyphar.com>
25dbd5678dSMartin Matuska# Copyright (C) 2019 SUSE LLC
26dbd5678dSMartin Matuska#
27dbd5678dSMartin Matuska
28dbd5678dSMartin Matuska. $STF_SUITE/include/libtest.shlib
29dbd5678dSMartin Matuska
30dbd5678dSMartin Matuskaverify_runnable "both"
31dbd5678dSMartin Matuska
32dbd5678dSMartin Matuskafunction cleanup
33dbd5678dSMartin Matuska{
34dbd5678dSMartin Matuska	log_must rm -rf $TESTDIR/*
35dbd5678dSMartin Matuska}
36dbd5678dSMartin Matuska
37dbd5678dSMartin Matuskalog_assert "ZFS supports RENAME_EXCHANGE."
38dbd5678dSMartin Matuskalog_onexit cleanup
39dbd5678dSMartin Matuska
40dbd5678dSMartin Matuskacd $TESTDIR
41dbd5678dSMartin Matuskaecho "foo" > foo
42dbd5678dSMartin Matuskaecho "bar" > bar
43dbd5678dSMartin Matuska
44dbd5678dSMartin Matuska# Self-exchange is a no-op.
45dbd5678dSMartin Matuskalog_must renameat2 -x foo foo
46dbd5678dSMartin Matuskalog_must grep '^foo$' foo
47dbd5678dSMartin Matuska
48dbd5678dSMartin Matuska# Basic exchange.
49dbd5678dSMartin Matuskalog_must renameat2 -x foo bar
50dbd5678dSMartin Matuskalog_must grep '^bar$' foo
51dbd5678dSMartin Matuskalog_must grep '^foo$' bar
52dbd5678dSMartin Matuska
53dbd5678dSMartin Matuska# And exchange back.
54dbd5678dSMartin Matuskalog_must renameat2 -x foo bar
55dbd5678dSMartin Matuskalog_must grep '^foo$' foo
56dbd5678dSMartin Matuskalog_must grep '^bar$' bar
57dbd5678dSMartin Matuska
58dbd5678dSMartin Matuska# Exchange with a bad path should fail.
59dbd5678dSMartin Matuskalog_mustnot renameat2 -x bar baz
60dbd5678dSMartin Matuska
61dbd5678dSMartin Matuskalog_pass "ZFS supports RENAME_EXCHANGE as expected."
62