#! /bin/bash # SPDX-License-Identifier: GPL-2.0 # Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. # # FS QA Test No. 005 # # Test symlinks & ELOOP # # # Note: On Linux, ELOOP limit used to be 32 but changed to 8, and lately # its become 5. Who knows what it might be next. # # What we are looking for here is: no panic due to blowing the stack; # and that the ELOOP error code is returned at some point (the actual # limit point is unimportant, just checking that we do hit it). # . ./common/preamble _begin_fstest dir udf auto quick status=0 # success is the default! # Override the default cleanup function. _cleanup() { cd $TEST_DIR rm -f symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9} symlink_self empty_file cd / } _touch() { touch $@ 2>&1 | grep -q 'Too many levels of symbolic links' if [ $? -eq 0 ]; then echo "ELOOP returned. Good." else echo "No ELOOP? Unexpected!" fi } # Import common functions. . ./common/filter # real QA test starts here _supported_fs generic _require_test _require_symlinks cd $TEST_DIR o=empty_file touch $o for f in symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9} do ln -s $o $f o=$f done ln -s symlink_self symlink_self echo "*** touch deep symlinks" echo "" _touch symlink_{0,1,2,3,4}{0,1,2,3,4,5,6,7,8,9} echo "" echo "*** touch recusive symlinks" echo "" _touch symlink_self exit