137550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman#!/bin/bash
21d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
31d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak#
41d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# Copyright (c) International Business Machines  Corp., 2005
51d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# Author: Avantika Mathur (mathurav@us.ibm.com)
61d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak#
71d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# This library is free software; you can redistribute it and/or
81d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# modify it under the terms of the GNU Lesser General Public
91d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# License as published by the Free Software Foundation; either
101d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# version 2.1 of the License, or (at your option) any later version.
111d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak#
121d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# This library is distributed in the hope that it will be useful,
131d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# but WITHOUT ANY WARRANTY; without even the implied warranty of
141d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
151d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# Lesser General Public License for more details.
161d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak#
171d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# You should have received a copy of the GNU Lesser General Public
181d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# License along with this library; if not, write to the Free Software
191d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
201d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak#
211d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
221d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakSETS_DEFAULTS="${TCID=test20} ${TST_COUNT=1} ${TST_TOTAL=1}"
231d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakdeclare -r TCID
241d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakdeclare -r TST_COUNT
251d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakdeclare -r TST_TOTAL
261d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakexport TCID TST_COUNT TST_TOTAL
271d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
281d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktst_resm TINFO "***************TEST20***************"
291d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktst_resm TINFO "bind: shared subtree with shared child to uncloneable subtree."
301d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktst_resm TINFO "************************************"
311d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
321d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak. "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of bind/test20 failed" && tst_exit)
331d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakexport result=0
341d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
351d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
361d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
371d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktrap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR
381d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
391d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakwhile /bin/true ; do
401d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	# This loop is for error recovery purposes only
411d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak
4237550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
4337550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
441d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	"${FS_BIND_ROOT}/bin/makedir" share parent1
451d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	"${FS_BIND_ROOT}/bin/makedir" unclone parent2
461d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	"${FS_BIND_ROOT}/bin/makedir" share share1
4737550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
481d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	mount --bind "$disk1" share1
491d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	mount --bind share1 parent1
5037550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
5137550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman	mount --bind parent1 parent2
521d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	"${FS_BIND_ROOT}/bin/makedir" share parent1/child1
5337550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
541d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	check parent1 share1 parent2
551d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	mount --bind "$disk2" parent1/child1
561d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	check parent1/child1 parent2/child1
571d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	check parent1/child1 share1/child1
581d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	mount --bind "$disk3" parent2/a
5937550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
601d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	check parent1/a parent2/a share1/a
6137550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
621d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	mount --bind "$disk4" share1/b
6337550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
641d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	check parent1/b parent2/b share1/b
6537550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
661d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	break
671d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakdone
681d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktrap 'ERR=$? ; tst_resm TWARN "bind/test20: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR
691d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakif [ -n "${ERR_MSG}" ]; then
701d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	tst_resm TWARN "bind/test20: ${ERR_MSG}"
711d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	ERR_MSG=""
721d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	result=$ERR
731d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakfi
741d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktrap '' ERR
751d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak{
761d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount share1/b
771d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent2/a
781d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent1/child1
791d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent1/child1
801d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent2
811d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent1
821d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount share1
831d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent2
841d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount parent1
851d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	umount share1
8637550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
871d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	rm -rf parent* share*
881d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	cleanup
891d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak} >& /dev/null
901d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakif [ $result -ne 0 ]
911d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakthen
921d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	tst_resm TFAIL "bind/test20: FAILED: bind: shared subtree with shared child to uncloneable subtree."
931d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	exit 1
941d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakelse
951d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modak	tst_resm TPASS "bind/test20: PASSED"
9637550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman	exit 0
971d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modakfi
981d1937abbf836db65aaa6806c5a3bfb7deb2ae43subrata_modaktst_exit
99