1#!/usr/local/bin/ksh93 -p
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License (the "License").
7# You may not use this file except in compliance with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22
23# $FreeBSD$
24
25#
26# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
27# Use is subject to license terms.
28#
29# ident	"@(#)write_dirs_001_pos.ksh	1.2	07/01/09 SMI"
30#
31
32. $STF_SUITE/include/libtest.kshlib
33
34###########################################################################
35#
36# __stc_assertion_start
37#
38# ID: write_dirs_001_pos
39#
40# DESCRIPTION:
41# Create as many directories with 50 big files each until the file system
42# is full. The zfs file system should be stable and works well.
43#
44# STRATEGY:
45# 1. Create a pool & dateset
46# 2. Make directories in the zfs file system
47# 3. Create 50 big files in each directories
48# 4. Test case exit when the disk is full.
49#
50# TESTABILITY: explicit
51#
52# TEST_AUTOMATION_LEVEL: automated
53#
54# CODING_STATUS: COMPLETED (2005-07-04)
55#
56# __stc_assertion_end
57#
58################################################################################
59
60verify_runnable "both"
61
62function cleanup
63{
64	for file in `$FIND $TESTDIR -type f`; do
65		$CAT /dev/null > $file
66	done
67	log_must $SYNC
68	log_must $RM -rf $TESTDIR/*
69}
70
71typeset -i retval=0
72log_assert "Creating directories with 50 big files in each, until file system "\
73	"is full."
74
75log_onexit cleanup
76
77typeset -i bytes=8192
78typeset -i num_writes=300000
79typeset -i dirnum=50
80typeset -i filenum=50
81
82fill_fs "" $dirnum $filenum $bytes $num_writes
83retval=$?
84if (( retval == 28 )); then
85	log_note "No space left on device."
86elif (( retval != 0 )); then
87	log_fail "Unexpected exit: $retval"
88fi
89
90log_pass "Write big files in a directory succeeded."
91