. ./common.rc
. ./common.filter
+addentries()
+{
+ count=$1
+ pattern="%0$2d"
+
+ while [ $count -gt 0 ]; do
+ touch `printf $pattern $count`
+ count=`expr $count - 1`
+ done
+}
+
# real QA test starts here
+rm -f $seq.full
[ "X$TEST_DIR" = "X" ] && exit 1
cd $TEST_DIR
rm -fr test
cd $TEST_DIR/test
mount > t_mtab
-$here/src/t_mtab 2 &
-$here/src/t_mtab 2 &
-$here/src/t_mtab 2 &
-wait
+mtab()
+{
+ $here/src/t_mtab 50 &
+ $here/src/t_mtab 50 &
+ $here/src/t_mtab 50 &
+ wait
+
+ $here/src/t_mtab 10000
+
+ echo directory entries:
+ ls | grep mtab
+ echo directory entries >> $here/$seq.full
+ ls -li >> $here/$seq.full
+}
+
+# directory with only a few entries
+mtab
-$here/src/t_mtab 10000
+# directory with a hundred more entries, each 4chars wide
+addentries 100 4
+mtab
-echo directory entries:
-ls
-ls -li > $seq.full
+# directory with a thousand more entries, each 8chars wide
+addentries 1000 8
+mtab
-# success, all done
status=0
exit
QA output created by 089
-completed 2 iterations
-completed 2 iterations
-completed 2 iterations
+completed 50 iterations
+completed 50 iterations
+completed 50 iterations
+completed 10000 iterations
+directory entries:
+t_mtab
+completed 50 iterations
+completed 50 iterations
+completed 50 iterations
+completed 10000 iterations
+directory entries:
+t_mtab
+completed 50 iterations
+completed 50 iterations
+completed 50 iterations
completed 10000 iterations
directory entries:
t_mtab
}
we_created_lockfile = 1;
} else {
+#if 0 /* nathans: dont limit, we are forcing lots of parallel accesses */
static int tries = 0;
+#endif
/* Someone else made the link. Wait. */
alarm(LOCK_TIMEOUT);
- if (fcntl (fd, F_SETLKW, &flock) == -1) {
+ if (fcntl (fd, F_SETLKW, &flock) == -1 &&
+ errno != EBUSY) {
int errsv = errno;
fprintf(stderr, "can't lock lock file %s: %s",
mounted_lock, (errno == EINTR) ?
exit(1);
}
alarm(0);
+#if 0 /* nathans: dont limit, we are forcing lots of parallel accesses */
/* Limit the number of iterations - maybe there
still is some old /etc/mtab~ */
if (tries++ > 3) {
}
sleep(1);
}
+#endif
}
close (fd);
}