X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2FREADME.ids;h=a8539c3856f78fe942f0379fa27cf198e349d99d;hb=1893d0cb4ead0c174ea30804bbabd97d3eceeb14;hp=4bf4972f2e33da6123492afafff0840b45886c79;hpb=37ca3e099488a708350550485ebc0ef9ae887db6;p=netatalk.git diff --git a/doc/README.ids b/doc/README.ids index 4bf4972f..a8539c38 100644 --- a/doc/README.ids +++ b/doc/README.ids @@ -62,6 +62,8 @@ their embeded documents. These can break in the same way as aliases. So how does netatalk approach the problem? +!!! The following is outdated, please refer to the Manual instead !!! + Netatalk has two different methods of allocating IDs: last and cnid. DID = last. @@ -75,10 +77,26 @@ to use IDs much, things break. DID = cnid. -This uses a Berkeley 3 database to store and maintain a directory of IDs -similar to that of a catalogue file on a mac. Consequently it is the most -reliable method. Unfortunately there seem to be heavy multi user problems -that lead to database corruption. These are being worked on, but cnid remains -the safest and most reliable DID scheme. See README.cnid for more details. - - +The CNID scheme in Netatalk attempts to assign unique IDs to each file and +directory, then keep those IDs persistent across mounts of the volume. This +way, cross-volume aliases will work, and users are less likely to encounter +duplicate CNID errors. Prior to Netatalk 1.6.0, the CNID calculation +scheme was not persistent, and IDs were assigned based on the UNIX device and +inode number of a given file or directory (see DID = last above). This was +fine for the most part, but due to limitations, not all available CNIDs could +be used. As well, these IDs could change independently from Netatalk, and +thus were not persistent. As of Netatalk 1.6.0, the CNID scheme is now the +default. On top of that, Netatalk uses the Concurrent Datastore method to +avoid the need for database locking and transactions. + +As stated above, CNID requires Berkeley DB. Currently, Netatalk supports +BDB 4.1.25 and 4.2.52 The recommended version is 4.2.52 as that is the version +on which most testing has been done. + +CNID has seen many contributors over the years. It was conceived by +Adrian Sun . His developer notes can be found +libatalk/cnid/README file. It was later picked up and modernized by Uwe Hees +. Then, Joe Marcus Clarke +started fixing bugs and adding additional features. The Concurrent +Datastore support was subsequently added by Dan Wilga . +The CNID code is currently maintained by Joe Marcus Clarke.