| #! /bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (C) 2021 CTERA Networks. All Rights Reserved. |
| # |
| # Check that directory modifications to an open dir are observed |
| # by a new open fd |
| # |
| . ./common/preamble |
| _begin_fstest auto quick dir |
| |
| # Import common functions. |
| . ./common/filter |
| |
| _require_test |
| |
| testdir=$TEST_DIR/test-$seq |
| rm -rf $testdir |
| mkdir $testdir |
| |
| # Use small getdents bufsize to fit less than 10 entries |
| # stuct linux_dirent64 is 20 bytes not including d_name |
| bufsize=200 |
| |
| # Check readdir content of an empty dir changes when adding a new file |
| echo -e "\nCreate file 0 in an open dir:" >> $seqres.full |
| $here/src/t_dir_offset2 $testdir $bufsize "+0" 2>&1 >> $seqres.full || \ |
| echo "Missing created file in open dir (see $seqres.full for details)" |
| |
| # Create enough files to be returned in multiple gendents() calls. |
| # At least one of the files that we delete will not be listed in the |
| # first call, so we may encounter stale entries in following calls. |
| for n in {1..100}; do |
| touch $testdir/$n |
| done |
| |
| # Check readdir content changes after removing files |
| for n in {1..10}; do |
| echo -e "\nRemove file ${n}0 in an open dir:" >> $seqres.full |
| $here/src/t_dir_offset2 $testdir $bufsize "-${n}0" 2>&1 >> $seqres.full || \ |
| echo "Found unlinked files in open dir (see $seqres.full for details)" |
| done |
| |
| # success, all done |
| echo "Silence is golden" |
| status=0 |