Update of /cvsroot/ltp/ltp/testcases/kernel/fs/fs_bind/cloneNS In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10236/ltp/testcases/kernel/fs/fs_bind/cloneNS Added Files: OO_descriptions.txt child01 child02 child03 child04 child05 child06 child07 parent01 parent02 parent03 parent04 parent05 parent06 parent07 test01 test02 test03 test04 test05 test06 test07 Log Message: This patch adds a few tests for a variety of bind mounts. More than just shared subtrees are involved as plain --bind and plain --move are used. Read-only bind mounts are not covered by these tests however. Avantika Mathur originally wrote the tests. I've ported them to use LTP APIs and conventions. I've also modified Avantika's scripts to try and robustly cleanup after broken tests so that leftover mounts and failures at any point in a test are cleaned up thoroughly. I've made what efforts I can to follow the conventions I found in LTP FAQs and the source however there's alot here so I may have missed something. Shared bind mounts were introduced in 2.6.15. Because of this we need a tst_kvercmp command which can be invoked from a script. I've added this to ltpapicmd.c. This patch applies to the April release of LTP. I'll also be posting results for x86, x86_64, and ppc64 on a variety of kernels. In order to highlight the results contributed by this patch I've only run this portion of the patched LTP. Comments welcome. Signed-off-by: Matt Helsley <mat...@us...>. --- NEW FILE: test02 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test02} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST02***************" tst_resm TINFO "cloneNS: namespaces with parent-slave" tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test02 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent02" ./ cp "${FS_BIND_ROOT}/cloneNS/child02" . chmod 755 parent02 child02 "${FS_BIND_ROOT}/bin/makedir" share dir1 mount --bind "$disk1" dir1 mkdir dir2 mount --bind dir1 dir2 "${FS_BIND_ROOT}/bin/makedir" slave dir2 "${FS_BIND_ROOT}/bin/nsclone" ./parent02 ./child02 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test02: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test02: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount dir1/a umount dir2/b umount dir1/c umount dir2 umount dir1 umount dir1 rm -rf dir* parent* child* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test02: FAILED: cloneNS: namespaces with parent-slave" exit 1 else tst_resm TPASS "cloneNS/test02: PASSED" exit 0 fi tst_exit --- NEW FILE: test03 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test03} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST03***************" tst_resm TINFO "cloneNS: namespace with unclonable mount " tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test03 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent03" ./ cp "${FS_BIND_ROOT}/cloneNS/child03" . chmod 755 parent03 child03 "${FS_BIND_ROOT}/bin/makedir" unclone dir1 mount --bind "$disk1" dir1 "${FS_BIND_ROOT}/bin/nsclone" ./parent03 ./child03 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test03: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test03: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount dir1 umount dir1 rm -rf dir* parent* child* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test03: FAILED: cloneNS: namespace with unclonable mount " exit 1 else tst_resm TPASS "cloneNS/test03: PASSED" exit 0 fi tst_exit --- NEW FILE: test01 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test01} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST01***************" tst_resm TINFO "cloneNS: namespace with shared dirs" tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test01 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent01" ./ cp "${FS_BIND_ROOT}/cloneNS/child01" . chmod 755 parent01 child01 "${FS_BIND_ROOT}/bin/makedir" share dir1 "${FS_BIND_ROOT}/bin/makedir" share dir2 mount --bind "$disk1" dir1 mount --bind dir1 dir2 "${FS_BIND_ROOT}/bin/nsclone" ./parent01 ./child01 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test01: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test01: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount dir1/a umount dir2/b umount dir1 umount dir1 umount dir1 umount dir2 rm -rf dir* parent* child* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test01: FAILED: cloneNS: namespace with shared dirs" exit 1 else tst_resm TPASS "cloneNS/test01: PASSED" exit 0 fi tst_exit --- NEW FILE: test06 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test06} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST06***************" tst_resm TINFO "cloneNS: namespace with shared point bind mounted " tst_resm TINFO "within the same directory" tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test06 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent06" ./ cp "${FS_BIND_ROOT}/cloneNS/child06" . chmod 755 parent06 child06 "${FS_BIND_ROOT}/bin/makedir" share dir1 mkdir dir1/x dir2 dir3 dir4 mount --rbind dir1 dir2 "${FS_BIND_ROOT}/bin/makedir" slave dir2 "${FS_BIND_ROOT}/bin/makedir" -n share dir2 mount --rbind dir2 dir3 "${FS_BIND_ROOT}/bin/makedir" slave dir3 "${FS_BIND_ROOT}/bin/makedir" -n share dir3 mount --rbind dir3 dir4 "${FS_BIND_ROOT}/bin/makedir" slave dir4 "${FS_BIND_ROOT}/bin/nsclone" ./parent06 ./child06 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test06: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test06: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount dir3/x/b umount dir2/x/a umount dir1/x umount dir4 umount dir3 umount dir2 umount dir1 rm -rf parent* child* dir* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test06: FAILED: cloneNS: namespace with shared point bind mounted within the same directory" exit 1 else tst_resm TPASS "cloneNS/test06: PASSED" exit 0 fi tst_exit --- NEW FILE: test07 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test07} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST 07***************" tst_resm TINFO "cloneNS: slave child to slave parent." tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test07 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent07" ./ cp "${FS_BIND_ROOT}/cloneNS/child07" . chmod 755 parent07 child07 mkdir parent1 parent2 mount --bind "$disk1" parent1 mount --make-rshared parent1 > /dev/null 2>&1 || "${FS_BIND_ROOT}/bin/smount" parent1 rshared mount --bind parent1 parent2 check parent1 parent2 mount --move parent1 parent2/a check parent2 parent2/a parent2/a/a "${FS_BIND_ROOT}/bin/nsclone" ./parent07 ./child07 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test07: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test07: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount parent2/b umount parent2/a/a umount parent2/a umount parent2 umount parent1 rm -rf parent* child* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test07: FAILED: cloneNS: slave child to slave parent." exit 1 else tst_resm TPASS "cloneNS/test07: PASSED" exit 0 fi tst_exit --- NEW FILE: test04 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test04} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST04***************" tst_resm TINFO "cloneNS: namespace with private mount." tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test04 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent04" ./ cp "${FS_BIND_ROOT}/cloneNS/child04" . chmod 755 parent04 child04 "${FS_BIND_ROOT}/bin/makedir" priv dir1 mount --bind "$disk1" dir1 "${FS_BIND_ROOT}/bin/nsclone" ./parent04 ./child04 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test04: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test04: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount dir1/a umount dir1 umount dir1 rm -rf dir* parent* child* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test04: FAILED: cloneNS: namespace with private mount." exit 1 else tst_resm TPASS "cloneNS/test04: PASSED" exit 0 fi tst_exit --- NEW FILE: test05 --- #!/bin/bash # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # SETS_DEFAULTS="${TCID=test05} ${TST_COUNT=1} ${TST_TOTAL=1}" declare -r TCID declare -r TST_COUNT declare -r TST_TOTAL export TCID TST_COUNT TST_TOTAL tst_resm TINFO "***************TEST05***************" tst_resm TINFO "cloneNS: namespace with multi-level " tst_resm TINFO "chain of slaves" tst_resm TINFO "************************************" . "${FS_BIND_ROOT}/bin/setup" || (tst_resm TWARN "Setup of cloneNS/test05 failed" && tst_exit) export result=0 trap 'ERR=$? ; ERR_MSG="caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"; break' ERR while /bin/true ; do # This loop is for error recovery purposes only cp "${FS_BIND_ROOT}/cloneNS/parent05" ./ cp "${FS_BIND_ROOT}/cloneNS/child05" . chmod 755 parent05 child05 "${FS_BIND_ROOT}/bin/makedir" share parent "${FS_BIND_ROOT}/bin/makedir" share parent/child1 "${FS_BIND_ROOT}/bin/makedir" share parent/child2 mount --rbind "$disk1" parent/child1 mount --rbind parent parent/child2/ "${FS_BIND_ROOT}/bin/nsclone" ./parent05 ./child05 || result=$? break done trap 'ERR=$? ; tst_resm TWARN "cloneNS/test05: caught error near: ${BASH_SOURCE[0]}:${FUNCNAME[0]}:${LINENO}:$_ (returned ${ERR})"' ERR if [ -n "${ERR_MSG}" ]; then tst_resm TWARN "cloneNS/test05: ${ERR_MSG}" ERR_MSG="" result=$ERR fi trap '' ERR { umount parent/child2/child2 umount parent/child2/child1/a umount parent/child2/child1/c umount parent/child2/child1 umount parent/child2/child1 umount parent/child2 umount parent/child2 umount parent rm -rf parent* child* cleanup } >& /dev/null if [ $result -ne 0 ] then tst_resm TFAIL "cloneNS/test05: FAILED: cloneNS: namespace with multi-level chain of slaves" exit 1 else tst_resm TPASS "cloneNS/test05: PASSED" exit 0 fi tst_exit --- NEW FILE: OO_descriptions.txt --- /******************************************************************************/ /* */ /* Copyright (c) International Business Machines Corp., 2008 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ /* the GNU General Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License */ /* along with this program; if not, write to the Free Software */ /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* */ /******************************************************************************/ OO_DESCRIPTION.txt ================== The contents of the cloneNS directory: test01 - namespace with shared dirs test02 - namespaces with parent-slave test03 - namespace with unclonable mount test04 - namespace with private mount. test05 - namespace with multi-level test06 - namespace with shared point bind mounted test07 - slave child to slave parent. test01: ======= namespace with shared dirs test02: ======= namespaces with parent-slave test03: ======= namespace with unclonable mount test04: ======= namespace with private mount. test05: ======= namespace with multi-level chain of slaves test06: ======= namespace with shared point bind mounted within the same directory test07: ======= slave child to slave parent. --- NEW FILE: child05 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check "$disk2" parent/child1/a parent/child2/child1/a check "$disk3" parent/child1/b parent/child2/child1/b mount --bind "$disk4" parent/child2/child1/c check parent/child2/child1/c parent/child1/c umount parent/child1/b check parent/child2/child1/b parent/child1/b exit $result --- NEW FILE: child04 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check -n "$disk2" dir1/a mount --bind "$disk3" dir1/b exit $result --- NEW FILE: child07 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check parent2 parent2/a parent2/a/a check parent2/b parent2/a/b parent2/a/a/b mount --bind "$disk3" parent1/a/c check parent2/c parent2/a/c parent2/a/a/c goahead iamgoingahead check parent2/c parent2/a/c parent2/a/a/c exit $result --- NEW FILE: child06 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check dir1/x dir2/x dir3/x dir4/x echo ls dir1/x/a ls dir1/x/a check -n dir1/x/a dir2/x/a check "$disk2" dir2/x/a dir3/x/a dir4/x/a mount --rbind "$disk3" dir3/x/b check -n dir1/x/b dir3/x/b check -n dir2/x/b dir3/x/b check dir3/x/b dir4/x/b mount --rbind "$disk4" dir4/x/c check -n dir1/x/c dir4/x/c check -n dir2/x/c dir4/x/c check -n dir3/x/c dir4/x/c exit $result --- NEW FILE: child01 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check "$disk2" dir1/a dir2/a mount --bind "$disk3" dir1/b check dir1/b dir2/b exit $result --- NEW FILE: child03 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check "$disk1" dir1 exit $result --- NEW FILE: child02 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startchild goahead iamgoingahead result=0 check "$disk2" dir1/a dir2/a check -n "$disk3" d2/b check -n "$disk3" d1/b mount --bind "$disk4" dir1/c check dir1/c dir2/c umount dir2/a check -n dir1/a dir2/a exit $result --- NEW FILE: parent01 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 ls ls dir* mount --bind "$disk2" dir2/a check dir1/a dir2/a echo dir1/a ls dir1/a goahead iamgoingahead check "$disk3" dir1/b dir2/b echo dir2/b ls dir2/b exit $result --- NEW FILE: parent02 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 ls ls dir* mount --bind "$disk2" dir1/a check dir1/a dir2/a mount --bind "$disk3" dir2/b check -n dir1/b dir2/b goahead iamgoingahead check "$disk2" dir1/a dir2/a check "$disk4" dir1/c dir2/c exit $result --- NEW FILE: parent03 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 check "$disk1" dir1 goahead exit $result --- NEW FILE: parent04 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 mount --bind "$disk2" dir1/a goahead iamgoingahead check -n "$disk3" dir1/b exit $result --- NEW FILE: parent05 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 mount --bind "$disk2" parent/child1/a check parent/child1/a parent/child2/child1/a mount --bind "$disk3" parent/child2/child1/b check parent/child1/b parent/child2/child1/b goahead iamgoingahead check "$disk4" parent/child2/child1/c parent/child1/c check -n "$disk3" parent/child1/b check parent/child1/b parent/child2/child1/b exit $result --- NEW FILE: parent06 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 mount --rbind "$disk1" dir1/x check dir1/x dir2/x dir3/x dir4/x mount --rbind "$disk2" dir2/x/a check -n dir1/x/a dir2/x/a check dir2/x/a dir3/x/a dir4/x/a goahead iamgoingahead check -n dir1/x/b dir3/x/b check -n dir2/x/b dir3/x/b check dir3/x/b dir4/x/b check "$disk3" dir3/x/b check -n "$disk4" dir4/x/c check dir1/x/c dir2/x/c dir3/x/c dir4/x/c exit $result --- NEW FILE: parent07 --- # # Copyright (c) International Business Machines Corp., 2005 # Author: Avantika Mathur (mat...@us...) # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # . "${FS_BIND_ROOT}/bin/setup" . "${FS_BIND_ROOT}/bin/setupnslock" startparent iamgoingahead result=0 check parent2 parent2/a parent2/a/a mount --bind "$disk2" parent2/b check parent2/b parent2/a/b parent2/a/a/b goahead iamgoingahead check parent2 parent2/a parent2/a/a check parent2/c parent2/a/c parent2/a/a/c umount parent2/a/a/c check parent2/c parent2/a/c parent2/a/a/c goahead exit $result |