Running the Netatalk test-suite with a volume on a ZFS set with ZFS property nbmand set to on causes nearly all tests to fail. The reason is (and it’s something Oracle hides well under the covers): it modifies POSIX semantics up to a point that POSIX compliant applications fail left and right.

We’ve written and attached a small C program which demonstrates the effect. It opens a file in read/write mode, then forks a child process and in the child process tries to rename the file.

Expected result on a POSIX conforming platform: success.
Actual result with nbmand=on: permission denied.

$ gcc -o nbmand-demo nbmand-demo.c
$ cd /path/zfs-set/with/nbmand=off
$ touch file
$ /path/to/nbmand-demo file
… success …
$ cd /path/zfs-set/with/nbmand=on
$ touch file
$ /path/to/nbmand-demo file
… failure …

Therefor it is necessary to turn nbmand to off on any ZFS dataset you use for Netatalk AFP volumes.


Share →