xref: /freebsd-src/contrib/netbsd-tests/kernel/t_umount.sh (revision 9268022b74279434ed6300244e3f977e56a8ceb5)
1*57718be8SEnji Cooper# $NetBSD: t_umount.sh,v 1.5 2010/11/07 17:51:19 jmmv Exp $
2*57718be8SEnji Cooper#
3*57718be8SEnji Cooper# Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
4*57718be8SEnji Cooper# All rights reserved.
5*57718be8SEnji Cooper#
6*57718be8SEnji Cooper# Redistribution and use in source and binary forms, with or without
7*57718be8SEnji Cooper# modification, are permitted provided that the following conditions
8*57718be8SEnji Cooper# are met:
9*57718be8SEnji Cooper# 1. Redistributions of source code must retain the above copyright
10*57718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer.
11*57718be8SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright
12*57718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer in the
13*57718be8SEnji Cooper#    documentation and/or other materials provided with the distribution.
14*57718be8SEnji Cooper#
15*57718be8SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16*57718be8SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17*57718be8SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18*57718be8SEnji Cooper# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19*57718be8SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*57718be8SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*57718be8SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*57718be8SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*57718be8SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*57718be8SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*57718be8SEnji Cooper# POSSIBILITY OF SUCH DAMAGE.
26*57718be8SEnji Cooper#
27*57718be8SEnji Cooper
28*57718be8SEnji CooperTMPMP=umount-f_mount
29*57718be8SEnji CooperTMPIM=umount-f.im
30*57718be8SEnji Cooper
31*57718be8SEnji CooperVND=vnd0
32*57718be8SEnji CooperBVND=/dev/${VND}
33*57718be8SEnji CooperCVND=/dev/r${VND}
34*57718be8SEnji CooperMPART=a
35*57718be8SEnji Cooper
36*57718be8SEnji Cooperatf_test_case umount cleanup
37*57718be8SEnji Cooperumount_head()
38*57718be8SEnji Cooper{
39*57718be8SEnji Cooper	atf_set "descr" "Checks forced unmounting"
40*57718be8SEnji Cooper	atf_set "require.user" "root"
41*57718be8SEnji Cooper}
42*57718be8SEnji Cooperumount_body()
43*57718be8SEnji Cooper{
44*57718be8SEnji Cooper	cat >disktab <<EOF
45*57718be8SEnji Cooperfloppy288|2.88MB 3.5in Extra High Density Floppy:\
46*57718be8SEnji Cooper	:ty=floppy:se#512:nt#2:rm#300:ns#36:nc#80:\
47*57718be8SEnji Cooper	:pa#5760:oa#0:ba#4096:fa#512:ta=4.2BSD:\
48*57718be8SEnji Cooper	:pb#5760:ob#0:\
49*57718be8SEnji Cooper	:pc#5760:oc#0:
50*57718be8SEnji CooperEOF
51*57718be8SEnji Cooper
52*57718be8SEnji Cooper	echo "*** Creating a dummy directory tree at" \
53*57718be8SEnji Cooper	     "${TMPMP} mounted on ${TMPIM}"
54*57718be8SEnji Cooper
55*57718be8SEnji Cooper	atf_check -o ignore -e ignore mkdir ${TMPMP}
56*57718be8SEnji Cooper	atf_check -o ignore -e ignore touch ${TMPMP}/under_the_mount
57*57718be8SEnji Cooper	atf_check -o ignore -e ignore dd if=/dev/zero of=${TMPIM} count=5860
58*57718be8SEnji Cooper	atf_check -o ignore -e ignore vnconfig -v ${VND} ${TMPIM}
59*57718be8SEnji Cooper	atf_check -o ignore -e ignore disklabel -f disktab -rw ${VND} floppy288
60*57718be8SEnji Cooper	atf_check -o ignore -e ignore newfs -i 500 -b 8192 -f 1024 ${CVND}${MPART}
61*57718be8SEnji Cooper	atf_check -o ignore -e ignore mount -o async ${BVND}${MPART} ${TMPMP}
62*57718be8SEnji Cooper	atf_check -o ignore -e ignore touch ${TMPMP}/in_mounted_directory
63*57718be8SEnji Cooper
64*57718be8SEnji Cooper	echo "*** Testing forced unmount"
65*57718be8SEnji Cooper	test -e "${TMPMP}/in_mounted_directory" || \
66*57718be8SEnji Cooper	    atf_fail "Test file not present in mounted directory!"
67*57718be8SEnji Cooper
68*57718be8SEnji Cooper	mydir="`pwd`"
69*57718be8SEnji Cooper	cd "${TMPMP}"
70*57718be8SEnji Cooper	atf_check -o ignore -e ignore umount -f "${BVND}${MPART}"
71*57718be8SEnji Cooper
72*57718be8SEnji Cooper	atf_check -s ne:0 -e inline:"ls: .: No such file or directory\n" ls .
73*57718be8SEnji Cooper	atf_check -s ne:0 -e inline:"ls: ..: No such file or directory\n" ls ..
74*57718be8SEnji Cooper
75*57718be8SEnji Cooper	atf_check -s ne:0 -e ignore -o inline:"cd: can't cd to .\n" \
76*57718be8SEnji Cooper	    -x "cd . 2>&1"
77*57718be8SEnji Cooper	atf_check -s ne:0 -e ignore -o inline:"cd: can't cd to ..\n" \
78*57718be8SEnji Cooper	    -x "cd .. 2>&1"
79*57718be8SEnji Cooper
80*57718be8SEnji Cooper	cd "${mydir}"
81*57718be8SEnji Cooper
82*57718be8SEnji Cooper	test -e "${TMPMP}/under_the_mount" || \
83*57718be8SEnji Cooper	    atf_fail "Original mount point dissapeared!"
84*57718be8SEnji Cooper}
85*57718be8SEnji Cooperumount_cleanup()
86*57718be8SEnji Cooper{
87*57718be8SEnji Cooper	echo "*** Cleaning up ${TMPMP}, ${TMPIM}."
88*57718be8SEnji Cooper	umount -f "${TMPMP}"
89*57718be8SEnji Cooper	vnconfig -u "${VND}"
90*57718be8SEnji Cooper}
91*57718be8SEnji Cooper
92*57718be8SEnji Cooperatf_init_test_cases()
93*57718be8SEnji Cooper{
94*57718be8SEnji Cooper	atf_add_test_case umount
95*57718be8SEnji Cooper}
96