1*2fae26bdSAlan Somers#!/usr/local/bin/ksh93 -p 2*2fae26bdSAlan Somers# 3*2fae26bdSAlan Somers# CDDL HEADER START 4*2fae26bdSAlan Somers# 5*2fae26bdSAlan Somers# The contents of this file are subject to the terms of the 6*2fae26bdSAlan Somers# Common Development and Distribution License (the "License"). 7*2fae26bdSAlan Somers# You may not use this file except in compliance with the License. 8*2fae26bdSAlan Somers# 9*2fae26bdSAlan Somers# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*2fae26bdSAlan Somers# or http://www.opensolaris.org/os/licensing. 11*2fae26bdSAlan Somers# See the License for the specific language governing permissions 12*2fae26bdSAlan Somers# and limitations under the License. 13*2fae26bdSAlan Somers# 14*2fae26bdSAlan Somers# When distributing Covered Code, include this CDDL HEADER in each 15*2fae26bdSAlan Somers# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*2fae26bdSAlan Somers# If applicable, add the following below this CDDL HEADER, with the 17*2fae26bdSAlan Somers# fields enclosed by brackets "[]" replaced with your own identifying 18*2fae26bdSAlan Somers# information: Portions Copyright [yyyy] [name of copyright owner] 19*2fae26bdSAlan Somers# 20*2fae26bdSAlan Somers# CDDL HEADER END 21*2fae26bdSAlan Somers# 22*2fae26bdSAlan Somers# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*2fae26bdSAlan Somers# Use is subject to license terms. 24*2fae26bdSAlan Somers 25*2fae26bdSAlan Somers. $STF_SUITE/include/libtest.kshlib 26*2fae26bdSAlan Somers. $STF_SUITE/tests/xattr/xattr_common.kshlib 27*2fae26bdSAlan Somers 28*2fae26bdSAlan Somers################################################################################ 29*2fae26bdSAlan Somers# 30*2fae26bdSAlan Somers# __stc_assertion_start 31*2fae26bdSAlan Somers# 32*2fae26bdSAlan Somers# ID: xattr_012_pos 33*2fae26bdSAlan Somers# 34*2fae26bdSAlan Somers# DESCRIPTION: 35*2fae26bdSAlan Somers# xattr file sizes count towards normal disk usage 36*2fae26bdSAlan Somers# 37*2fae26bdSAlan Somers# STRATEGY: 38*2fae26bdSAlan Somers# 1. Create a file, and check pool and filesystem usage 39*2fae26bdSAlan Somers# 2. Create a 200mb xattr in that file 40*2fae26bdSAlan Somers# 3. Check pool and filesystem usage, to ensure it reflects the size 41*2fae26bdSAlan Somers# of the xattr 42*2fae26bdSAlan Somers# 43*2fae26bdSAlan Somers# TESTABILITY: explicit 44*2fae26bdSAlan Somers# 45*2fae26bdSAlan Somers# TEST_AUTOMATION_LEVEL: automated 46*2fae26bdSAlan Somers# 47*2fae26bdSAlan Somers# CODING_STATUS: COMPLETED (2006-12-15) 48*2fae26bdSAlan Somers# 49*2fae26bdSAlan Somers# __stc_assertion_end 50*2fae26bdSAlan Somers# 51*2fae26bdSAlan Somers################################################################################ 52*2fae26bdSAlan Somers 53*2fae26bdSAlan Somersfunction cleanup { 54*2fae26bdSAlan Somers log_must $RM $TESTDIR/myfile.${TESTCASE_ID} 55*2fae26bdSAlan Somers} 56*2fae26bdSAlan Somers 57*2fae26bdSAlan Somersfunction get_pool_size { 58*2fae26bdSAlan Somers poolname=$1 59*2fae26bdSAlan Somers psize=$( $ZPOOL list -H -o used $poolname ) 60*2fae26bdSAlan Somers if [[ $psize == *[mM] ]] 61*2fae26bdSAlan Somers then 62*2fae26bdSAlan Somers returnvalue=$($ECHO $psize | $SED -e 's/m//g' -e 's/M//g') 63*2fae26bdSAlan Somers returnvalue=$(( returnvalue * 1024 )) 64*2fae26bdSAlan Somers else 65*2fae26bdSAlan Somers returnvalue=$($ECHO $psize | $SED -e 's/k//g' -e 's/K//g') 66*2fae26bdSAlan Somers fi 67*2fae26bdSAlan Somers print $returnvalue 68*2fae26bdSAlan Somers} 69*2fae26bdSAlan Somers 70*2fae26bdSAlan Somerslog_assert "xattr file sizes count towards normal disk usage" 71*2fae26bdSAlan Somerslog_onexit cleanup 72*2fae26bdSAlan Somers 73*2fae26bdSAlan Somerstest_requires RUNAT 74*2fae26bdSAlan Somers 75*2fae26bdSAlan Somerslog_must $TOUCH $TESTDIR/myfile.${TESTCASE_ID} 76*2fae26bdSAlan Somers 77*2fae26bdSAlan SomersPOOL_SIZE=0 78*2fae26bdSAlan SomersNEW_POOL_SIZE=0 79*2fae26bdSAlan Somers 80*2fae26bdSAlan Somersif is_global_zone 81*2fae26bdSAlan Somersthen 82*2fae26bdSAlan Somers # get pool and filesystem sizes. Since we're starting with an empty 83*2fae26bdSAlan Somers # pool, the usage should be small - a few k. 84*2fae26bdSAlan Somers POOL_SIZE=$(get_pool_size $TESTPOOL) 85*2fae26bdSAlan Somersfi 86*2fae26bdSAlan Somers 87*2fae26bdSAlan SomersFS_SIZE=$( $ZFS get -p -H -o value used $TESTPOOL/$TESTFS ) 88*2fae26bdSAlan Somers 89*2fae26bdSAlan Somerslog_must $RUNAT $TESTDIR/myfile.${TESTCASE_ID} $MKFILE 200m xattr 90*2fae26bdSAlan Somers 91*2fae26bdSAlan Somers#Make sure the newly created file is counted into zpool usage 92*2fae26bdSAlan Somerslog_must $SYNC 93*2fae26bdSAlan Somers 94*2fae26bdSAlan Somers# now check to see if our pool disk usage has increased 95*2fae26bdSAlan Somersif is_global_zone 96*2fae26bdSAlan Somersthen 97*2fae26bdSAlan Somers NEW_POOL_SIZE=$(get_pool_size $TESTPOOL) 98*2fae26bdSAlan Somers if (( $NEW_POOL_SIZE <= $POOL_SIZE )) 99*2fae26bdSAlan Somers then 100*2fae26bdSAlan Somers log_fail "The new pool size $NEW_POOL_SIZE was less \ 101*2fae26bdSAlan Somers than or equal to the old pool size $POOL_SIZE." 102*2fae26bdSAlan Somers fi 103*2fae26bdSAlan Somers 104*2fae26bdSAlan Somersfi 105*2fae26bdSAlan Somers 106*2fae26bdSAlan Somers# also make sure our filesystem usage has increased 107*2fae26bdSAlan SomersNEW_FS_SIZE=$( $ZFS get -p -H -o value used $TESTPOOL/$TESTFS ) 108*2fae26bdSAlan Somersif (( $NEW_FS_SIZE <= $FS_SIZE )) 109*2fae26bdSAlan Somersthen 110*2fae26bdSAlan Somers log_fail "The new filesystem size $NEW_FS_SIZE was less \ 111*2fae26bdSAlan Somers than or equal to the old filesystem size $FS_SIZE." 112*2fae26bdSAlan Somersfi 113*2fae26bdSAlan Somers 114*2fae26bdSAlan Somerslog_pass "xattr file sizes count towards normal disk usage" 115