Here's an interesting problem which is in some ways related to the
current "Is any file system ... " thread.
I've got a vfat file system mounted on MO removable media mounted via
netatalk. It seems that when opening a directory afpd looks at the
'.AppleDouble' file in both the directory which is opened, and at least
one level of subdirectory. Thus... if I've got roughly 100 files per
directory, afpd accesses 10k files to service the open. This works on
a fast drive, or on an MO with an ext2 filesystem. BUT on an MO
sporting a vfat file system, the ethernet card (eepro 10mb) locks up.
The only way out is a reboot of the machine...
when shutting down, I receive a message on the console (but not in
the log file) which notes that interrupt 10 is hung (I don't remember
the exact message).
I've at least temporarily solved the problem by increasing DCACHE_SIZE
to 512. The access is still slow, but no longer freezes the port.
1) The size of the cache should be configurable... ideally
re-configurable dynamically, or via command.
2) Statistics on the utilization of the cache would be useful (and
necessary if one has the ability to alter the size).
3) Does Netatalk REALLY have to access all those directories? Assuming
that there is information required about a directory before opening it,
can the info be placed OUTSIDE the directory? Am I totally wrong as to
how netatalk works? I haven't proved to my satisfaction that netatalk
actually opens that many directories, but I can't explain what I'm
seeing here any other way. Is this something that the Appleshare client
on the Mac is doing?