Paul Eggert <[EMAIL PROTECTED]> wrote:
> Jim Meyering <[EMAIL PROTECTED]> writes:
>
>>      * tests/du/basic: Make the test larger than 64 bytes,
>
> The idea of putting small files' contents into the inode is an old
> one, and it keeps coming up (a quick Google search reports that the
> TFS folks are thinking of doing it:
> <http://groups.google.com/groups?selm=b0abr8%242hfc%241%40FreeBSD.csie.NCTU.edu.tw>).
>
> Though 64 bytes is enough for Netapp, I'd expect other filesystems to
> use larger values, if not now then in the future.  Would it be easy to
> increase that value to 8192 (or better yet, but this is merely icing
> on the cake: the maximum of 8192 and st_blksize)?

Sure it'd be easy.
Buy why 8k and not the current size of 4k?

Here's the test I'm using now:

#!/bin/sh
# Compare actual numbers from du, assuming block size matches mine.

if test "$VERBOSE" = yes; then
  set -x
  du --version
fi

# DU_BLOCK_SIZE could cause problems
. $srcdir/../envvar-check
. $srcdir/../lang-default

pwd=`pwd`
t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0
trap '(exit $?); exit $?' 1 2 13 15

framework_failure=0
mkdir -p $tmp || framework_failure=1
cd $tmp || framework_failure=1
mkdir -p a/b d d/sub || framework_failure=1
printf 'make-sure-the-file-is-non-empty\n' > a/b/F || framework_failure=1

# Ensure that these files contain more than 64 bytes, so that we don't
# immediately disqualify file systems (e.g., NetApp) on which smaller
# files take up zero disk blocks.
yes | head --bytes=4k > d/1
yes | head --bytes=4k > d/sub/2

if test $framework_failure = 1; then
  echo "$0: failure in testing framework" 1>&2
  (exit 1); exit 1
fi

# Ensure that blocksize and block-count are what we expect for directories.
if test "`stat --format=%bx%B a`" != 8x512; then
  echo "$0: different block count/size, so skipping this test" 1>&2
  (exit 77); exit 77
fi

# Ensure that blocksize and block-count are what we expect for files.
if test "`stat --format=%bx%B d/1`" != 8x512; then
  echo "$0: different block count/size, so skipping this test" 1>&2
  (exit 77); exit 77
fi

fail=0

du -a a > out || fail=1
echo === >> out
du -a -S a >> out || fail=1
echo === >> out
du -s a >> out || fail=1
cat <<\EOF | sed 's/ *#.*//' > exp
4       a/b/F
8       a/b
12      a
===
4       a/b/F   # size of file, a/b/F
8       a/b     # size of dir entry, a/b, + size of file, a/b/F
4       a       # size of dir entry, a
===
12      a
EOF

cmp out exp || fail=1
test $fail = 1 && diff -u out exp 2> /dev/null

rm -f out exp
du -a d | sort -r -k2,2 > out || fail=1
echo === >> out
du -S d | sort -r -k2,2 >> out || fail=1

cat <<\EOF | sed 's/ *#.*//' > exp
4       d/sub/2
8       d/sub
4       d/1
16      d
===
8       d/sub
8       d           # d + d/1; don't count the dir. entry for d/sub
EOF

cmp out exp || fail=1
test $fail = 1 && diff out exp 2> /dev/null

(exit $fail); exit $fail
_______________________________________________
Bug-coreutils mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to