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 2018 Joyent, Inc. 15# 16 17. $STF_SUITE/include/libtest.shlib 18. $STF_SUITE/tests/functional/reservation/reservation.shlib 19 20# 21# DESCRIPTION: 22# 23# The use of refreservation=auto on a filesystem does not change the 24# refreservation and results in an error. 25# 26# STRATEGY: 27# 1) Create a filesystem 28# 2) Verify that zfs set refreservation=auto fails without changing 29# refreservation from none. 30# 3) Set refreservation to a valid value. 31# 4) Verify that zfs set refreservation=auto fails without changing 32# refreservation from the previous value. 33# 34 35verify_runnable "both" 36 37fs=$TESTPOOL/$TESTFS/${0##*/}.$$ 38 39function cleanup 40{ 41 destroy_dataset "$fs" "-f" 42} 43 44log_onexit cleanup 45 46log_assert "refreservation=auto on a filesystem generates an error without" \ 47 "changing refreservation" 48 49space_avail=$(get_prop available $TESTPOOL) 50(( fs_size = space_avail / 4 )) 51 52# Create a filesystem with no refreservation 53log_must zfs create $fs 54resv=$(get_prop refreservation $fs) 55log_must test $resv -eq 0 56 57# Verify that refreservation=auto fails without altering refreservation 58log_mustnot zfs set refreservation=auto $fs 59resv=$(get_prop refreservation $fs) 60log_must test $resv -eq 0 61 62# Set refreservation and verify 63log_must zfs set refreservation=$fs_size $fs 64resv=$(get_prop refreservation $fs) 65log_must test $resv -eq $fs_size 66 67# Verify that refreservation=auto fails without altering refreservation 68log_mustnot zfs set refreservation=auto $fs 69resv=$(get_prop refreservation $fs) 70log_must test $resv -eq $fs_size 71 72log_pass "refreservation=auto does not work on filesystems, as expected" 73