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