Netatalk 4.4.0
Netatalk 4.4.0 is available!
The Netatalk team is proud to announce the first version in the Netatalk 4.4 release series.
In this release, we introduce sophisticated directory cache optimization which drastically reduces file system I/O by properly using the pre-existing caching architecture. The default behavior is largely unchanged.
Newly introduced afp.conf options:
dircache validation freq
dircache metadata window
dircache metadata threshold
dircache files
In addition, a bug with the dircachesize option parsing has been fixed where if you used the maximum setting of 131072 it was ignored and used the default fallback.
See the Configuration chapter in the Netatalk manual for a thorough explanation of the directory cache logic and configuration options.
Early adopters are encouraged to try out this new version. We are looking forward to hearing your feedback!
Other Notable Changes
The sqlite CNID backend is no longer flagged as experimental. We now ship support for SQLite in the production container for netatalk. However, the dbd backend (Berkeley DB) is still the default and recommended for most deployments.
A sample SELinux policy for netatalk can be found under distrib/selinux. Please note that it is meant as a starting point and may need adjustments for production use.
The tool formerly known as ad is now called nad and has been thoroughly improved. All subcommands should work properly cross-platform now for safe file operations on AFP shared volumes on the local host.
Both mysql and sqlite CNID backends now support cnid_find() which is used by the search db afp.conf option and nad find command.
We generate developer documentation with Doxygen now, while code documentation comments got a major overhaul. The meson build system will look for Doxygen, and if found will generate and install html documentation. Control this behavior with the -Dwith-docs build system option.
The -Dwith-manual-install-dir meson option has been removed, with -Dwith-docs-install-dir introduced in its stead. The new option applies to all types of documentation, including the new developer documentation.
Dockerfiles have been moved from the repository root to distrib/docker.
New afp.conf option valid shellcheck, replacing the build system option -Dwith-shell-check which has been removed. Note that this only takes effect for afpd, while papd is now hard coded to always enable shell check.
How to Install
This is a source-only release. To build:
# Extract the source
tar -xf netatalk-4.4.0.tar.xz
cd netatalk-4.4.0
# Configure and build
meson setup build
meson compile -C build
# Install
sudo meson install -C build
What's Changed
- ad: make buffer size detection more portable in ad cp by @rdmark in https://github.com/Netatalk/netatalk/pull/2413
- getzones: defensively release memory in optarg function by @rdmark in https://github.com/Netatalk/netatalk/pull/2421
- meson: Solaris compatible check for iconv parameters by @rdmark in https://github.com/Netatalk/netatalk/pull/2415
- testsuite: Bugfixes for lantest.c, file system cleanup after tests by @andylemin in https://github.com/Netatalk/netatalk/pull/2424
- atalkd: NULL check before accessing struct member in rtmp_packet() by @rdmark in https://github.com/Netatalk/netatalk/pull/2426
- testsuite: refactor libafptest with a testhelper module by @rdmark in https://github.com/Netatalk/netatalk/pull/2425
- Consider the sqlite CNID backend stable by @rdmark in https://github.com/Netatalk/netatalk/pull/2432
- afpd: protect against bad parameters and buffer overflow in dtfile() by @rdmark in https://github.com/Netatalk/netatalk/pull/2436
- testsuite: Clean test volumes between each spectest test execution by @rdmark in https://github.com/Netatalk/netatalk/pull/2437
- afpd: introduce runtime option for valid shellcheck by @rdmark in https://github.com/Netatalk/netatalk/pull/2439
- testsuite: enhanced 'dircache statistics:' log output and added log support to afp_lantest by @andylemin in https://github.com/Netatalk/netatalk/pull/2433
- afpd: check that username is a string before assigning in log_dircache_stat() by @rdmark in https://github.com/Netatalk/netatalk/pull/2442
- getzones: protect against potential memory leak when exiting in optarg by @rdmark in https://github.com/Netatalk/netatalk/pull/2441
- meson: error out if no writable CNID backend selected for compilation by @rdmark in https://github.com/Netatalk/netatalk/pull/2450
- testsuite: refactor headers and declarations for internal consistency by @rdmark in https://github.com/Netatalk/netatalk/pull/2443
- Create SELinux policy for netatalk daemons by @rdmark in https://github.com/Netatalk/netatalk/pull/2248
- rename the ad binary to nad and improve code quality by @rdmark in https://github.com/Netatalk/netatalk/pull/2440
- dircache: Add probabilistic validation for dramatic I/O reduction by @andylemin in https://github.com/Netatalk/netatalk/pull/2447
- webmin: support newly added dircache tuning options by @rdmark in https://github.com/Netatalk/netatalk/pull/2462
- docker: build the sqlite CNID backend in the Alpine production container by @rdmark in https://github.com/Netatalk/netatalk/pull/2458
- docs: for testsuite man pages, list -l option separately in synopsis by @rdmark in https://github.com/Netatalk/netatalk/pull/2460
- nad: remove limits to operate on shared volumes using any CNID backend by @rdmark in https://github.com/Netatalk/netatalk/pull/2461
Full Changelog: https://github.com/Netatalk/netatalk/compare/netatalk-4-3-2...netatalk-4-4-0