On 11/14/2011 05:39 PM, Alessandro Salvatori wrote: > is there a way to disable this table altogether on a given kernel, if > one knows it will never export any NFS share?
Not currently. Well, sort of, but there's a pretty big side effect. The OS/2-compatibility mode doesn't have the table, but it also enables case-insensitivity. You could format a jfs filesystem with the -O flag to mkfs, which will make the file system compatible with OS/2 - no directory table and case-insensitivity. Probably not what you want. Even without NFS, a rm -rf may still fail to remove the whole directory in OS/2 compatibility mode. Shaggy > thanks! > -Alessandro- > Here i am, A young man, > A crashing computer program, > Here is a pen, write out my name... > > (from: The Servant - Orchestra) > > On Mon, Nov 14, 2011 at 15:23, Dave Kleikamp <[email protected]> wrote: >> On 11/14/2011 04:50 PM, Alessandro Salvatori wrote: >>> Hello, >>> >>> by creating and immediately deleting entries in a non-empty folder >>> on a jfs filesystem, it seems like one can leak filesystem space, that >>> will only be recovered when that folder becomes completely empty. To >>> see this for yourself, please delete the dummy_file created at the >>> beginning of this test script. >> >> Yeah, it is working as designed, although I regret the design decision I >> made so long ago. >> >> In order to resume a directory traversal while the directory is changing >> (typically doing rm -rf on a large directory), I had to add a persistent >> cookie to each directory entry and a method to find the entry from the >> cookie. (NFS required that it be persistent even if the server reboots.) >> I created a table separate from the b-tree, which is the primary data >> structure for the directory. New directory entries append to this table, >> and slots for deleted entries are not reused. The table is deleted if >> the very last entry is deleted from a directory, but is never shrunk. >> >> Doing something about this was always on my to-do list, but I haven't >> put much time into JFS the past few years and nothing got done. Maybe >> I'll find some time to play around with it or someone else might want to >> take a crack at it. I'll gladly review and accept patches. :-) >> >> Thanks, >> Shaggy >> >>> I was able to reproduce this on both Linux 2.6.34.1 and 3.1.0. I am >>> attaching a super-slim xz archive of the filesystem, as well as the >>> test script you may want to give a try in order to reproduce the >>> issue. >>> >>> thank you! >>> -Alessandro- >>> Here i am, A young man, >>> A crashing computer program, >>> Here is a pen, write out my name... >>> >>> (from: The Servant - Orchestra) >>> >>> localhost mnt # cat test.sh >>> #!/bin/sh >>> >>> name=${1:-jfs} >>> kind=${2:-jfs} >>> dd if=/dev/zero of="${name}.${kind}" bs=1M count=16 &>/dev/null >>> mkdir -p "${name}" >>> mkfs.${kind} "${name}.${kind}" >>> mount -o loop -t ${kind} "${name}.${kind}" "${name}" >>> cd "${name}" >>> touch dummy_file >>> while true >>> do >>> count=0 >>> while true >>> do >>> touch ${count} >>> sync; sync >>> unlink ${count} >>> count=$((count+1)) >>> perc=$((count%512)) >>> if [ $perc -eq 511 ] >>> then >>> df -a . | grep -v '^Filesystem' >>> ls -altrd . >>> df -i . | grep -v '^Filesystem' >>> break >>> fi >>> done >>> sync >>> done >>> localhost mnt # chmod +x test.sh >>> localhost mnt # ./test.sh c >>> mkfs.jfs version 1.1.15, 04-Mar-2011 >>> Warning! All data on device c.jfs will be lost! >>> >>> Continue? (Y/N) y >>> >>> >>> Format completed successfully. >>> >>> 16384 kilobytes total disk space. >>> /dev/loop2 15152 140 15012 1% /mnt/c >>> drwxr-xr-x 2 root root 4096 Nov 14 14:33 . >>> /dev/loop2 30048 6 30042 1% /mnt/c >>> /dev/loop2 15152 144 15008 1% /mnt/c >>> drwxr-xr-x 2 root root 8192 Nov 14 14:34 . >>> /dev/loop2 30048 6 30042 1% /mnt/c >>> /dev/loop2 15152 148 15004 1% /mnt/c >>> drwxr-xr-x 2 root root 12288 Nov 14 14:34 . >>> /dev/loop2 30016 6 30010 1% /mnt/c >>> /dev/loop2 15152 152 15000 2% /mnt/c >>> drwxr-xr-x 2 root root 16384 Nov 14 14:35 . >>> /dev/loop2 30016 6 30010 1% /mnt/c >>> /dev/loop2 15152 160 14992 2% /mnt/c >>> drwxr-xr-x 2 root root 20480 Nov 14 14:35 . >>> /dev/loop2 30016 6 30010 1% /mnt/c >>> /dev/loop2 15152 164 14988 2% /mnt/c >>> drwxr-xr-x 2 root root 24576 Nov 14 14:35 . >>> /dev/loop2 29984 6 29978 1% /mnt/c >>> /dev/loop2 15152 168 14984 2% /mnt/c >>> drwxr-xr-x 2 root root 28672 Nov 14 14:36 . >>> /dev/loop2 29984 6 29978 1% /mnt/c >>> /dev/loop2 15152 172 14980 2% /mnt/c >>> drwxr-xr-x 2 root root 32768 Nov 14 14:36 . >>> /dev/loop2 29984 6 29978 1% /mnt/c >>> /dev/loop2 15152 176 14976 2% /mnt/c >>> drwxr-xr-x 2 root root 36864 Nov 14 14:37 . >>> /dev/loop2 29984 6 29978 1% /mnt/c >>> /dev/loop2 15152 180 14972 2% /mnt/c >>> drwxr-xr-x 2 root root 40960 Nov 14 14:37 . >>> /dev/loop2 29952 6 29946 1% /mnt/c >>> /dev/loop2 15152 184 14968 2% /mnt/c >>> drwxr-xr-x 2 root root 45056 Nov 14 14:38 . >>> /dev/loop2 29952 6 29946 1% /mnt/c >>> /dev/loop2 15152 188 14964 2% /mnt/c >>> drwxr-xr-x 2 root root 49152 Nov 14 14:38 . >>> /dev/loop2 29952 6 29946 1% /mnt/c >>> /dev/loop2 15152 192 14960 2% /mnt/c >>> drwxr-xr-x 2 root root 53248 Nov 14 14:38 . >>> /dev/loop2 29952 6 29946 1% /mnt/c >>> /dev/loop2 15152 196 14956 2% /mnt/c >>> drwxr-xr-x 2 root root 57344 Nov 14 14:39 . >>> /dev/loop2 29920 6 29914 1% /mnt/c >> ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Jfs-discussion mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jfs-discussion
