is there a way to disable this table altogether on a given kernel, if
one knows it will never export any NFS share?

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

Reply via email to