3 This directory contains I hack I wrote to explore a way to fix the
4 netatalk persistent DID problem. A survey of the contents:
6 README.mtab -- notes for implementors and sysadmins, on why there is
7 an extra configuration file, and how to maintain it. If adopted, this
8 should become part of the distribution documentation. Much more could
11 afpd-mtab.pl -- perl script that acts as a filter, turning /etc/mtab
12 into an initial afpd.mtab version. (Only tested on RH Linux.)
14 afpd.mtab.* -- testing versions produced on my system. "make test"
15 tries to produce afpd.mtab automatically; if this doesn't work on your
16 configuration, you could try editing one of these to match your
19 parse-mtab.c, parse-mtab.h -- source intended to be integrated into
22 test-parse-mtab.c -- test driver for parse-mtab.c, reads the file and
23 produces CNID values for other files and directories given on the
24 command line. Change top_srcdir in the makefile and do "make test" in
25 order to compile & run this.
29 * I have only ext2fs partitions on a single local disk, so I haven't
30 been able to do very broad testing, even on Linux. This is part of why
31 I'm too chicken to try to paste this into the netatalk source. ;-}
33 * If there is no entry in the table, I just use the reserved 0 device
34 index. This seems like asking for trouble, so a better policy would be
35 to make absent devices unavailable (you probably don't want users poking
36 around in /var or /usr anyway), but that requires a more global
39 * The way it's now written, afpd is expected to fail to start up if
40 /etc/atalk/afpd.mtab is not found. That may not be optimal, but even if
41 it is, it requires some extra setup instructions.
43 * I'm assuming the high order bit need no longer be reserved for the
44 file/directory flag, but I have no idea whether that will work. If not,
47 * It would be good if, on startup, afpd would warn about partitions
48 in the table that have more inodes than can be represented in the
49 available number of bits.
51 * If partitions were to use a bit encoding that reversed the bits in
52 the index (i.e. putting the LSB "first" as written), then the device MSB
53 would be adjacent to the inode MSB. That would produce upward-
54 compatible DIDs if the number of device bits needed to increase. The
55 encoding is precomputed anyway, so it's not a speed concern. Better
56 still, by carefully choosing small indices for large-inode devices and
57 avoiding intermediate-sized indices, one could effectively set the
58 device/inode boundary independently for each device. This would allow a
59 sysadmin to come close to using all of the theoretical 32-bit DID-space.
60 (Implementation is left as an excercise. ;-)