nwatalk: use standalone mars_nwe AFP xattr backend

This commit is contained in:
Mario Fetka
2026-05-31 04:13:31 +00:00
parent 8e95b56ca6
commit fa96ebb264
8 changed files with 51 additions and 201 deletions

View File

@@ -15,11 +15,10 @@ namespace path instead of creating a parallel AFP resolver. The first AFP write
smoke path is deliberately limited to the FinderInfo bitmap of
AFP 2.0 Set File Information; CNID allocation, DOS attribute mapping, resource
fork writes, and data-fork writes remain separate write-safety work. mars_nwe
source uses Netatalk-style `org.mars-nwe.<domain>.*` xattr names; AFP
source uses mars_nwe `org.mars-nwe.<domain>.*` xattr names; AFP
metadata stays under `org.mars-nwe.afp.*` while NetWare-core metadata uses
`org.mars-nwe.netware.*`. On Linux the local xattr helper stores those through
the portable `user.` namespace, matching Netatalk's `org.netatalk.*` EA
abstraction style.
the portable `user.` namespace with mars_nwe-owned Apple/AFP metadata keys.
Build with:
@@ -355,7 +354,7 @@ A successful reply prints the request path, directory handle, and returned
existing NetWare namespace/basehandle mapping. A full-suite run after that
change returned `entry_id=0x00000004` for `SYS:PUBLIC/pmdflts.ini`.
If the server was built without the optional Netatalk/libatalk backend, the
If the server was built without the optional mars_nwe AFP xattr metadata backend, the
endpoint is expected to return invalid namespace. To treat that as a successful
negative smoke test, use:
@@ -427,7 +426,7 @@ AFP Entry ID From NetWare Handle path=SYS:PUBLIC/pmdflts.ini volume=0 entry_id=0
AFP Get Entry ID From NetWare Handle: handle=1 volume=0 unix='/var/mars_nwe/SYS/public/pmdflts.ini' entry=0x00000004
```
Persistent Apple CNID/AppleDouble/libatalk-backed identity, parent Entry ID
Persistent Apple CNID/AppleDouble/mars_nwe AFP xattr-backed identity, parent Entry ID
derivation, and AFP resource-fork handle semantics remain future Mac-namespace
work; the current smoke coverage verifies the conservative read-only data-fork
mapping through the existing NetWare namespace identity path.
@@ -487,7 +486,7 @@ helper, so the client prints `0xff`. The server diagnostic logs the internal
NetWare effective-rights mask before that AFP reply narrowing, so a fully
privileged directory can appear as `0x1ff` in `mars_nwe.log`.
If the server was built without the optional Netatalk/libatalk backend, use
If the server was built without the optional mars_nwe AFP xattr metadata backend, use
`--allow-invalid-namespace` for the expected negative test. Use
`--allow-invalid-path` for path-resolution negative tests.
@@ -572,7 +571,7 @@ A rejected resource-fork probe should print:
AFP Open File Fork returned expected completion 0x9c: path=SYS:PUBLIC/pmdflts.ini fork=1 access=0x01
```
If the server was built without the optional Netatalk/libatalk backend, use
If the server was built without the optional mars_nwe AFP xattr metadata backend, use
`--allow-invalid-namespace` for the expected negative test. Use
`--allow-invalid-path` for path-resolution or Entry-ID-only negative tests.
@@ -653,11 +652,11 @@ currently exercises the same path-backed read-only reply as the older call.
The current implementation fills fields from the existing mars_nwe sources of
truth where possible: NetWare attributes, namespace/basehandle Entry IDs,
trustee-derived AccessPrivileges, Unix file sizes and timestamps, and optional
AFP/libatalk metadata such as FinderInfo. Parent ID, persistent Apple
AFP/mars_nwe AFP xattr metadata such as FinderInfo. Parent ID, persistent Apple
CNID/AppleDouble IDs, and fuller resource-fork semantics remain future
Mac-namespace work.
If the server was built without the optional Netatalk/libatalk backend, use
If the server was built without the optional mars_nwe AFP xattr metadata backend, use
`--allow-invalid-namespace` for the expected negative test. Use
`--allow-invalid-path` for path-resolution negative tests.
@@ -716,7 +715,7 @@ shares the same conservative scan implementation so older AFP callers can probe
the same read-only directory listing semantics before fuller multi-response and
CNID-backed scans are implemented.
If the server was built without the optional Netatalk/libatalk backend, use
If the server was built without the optional mars_nwe AFP xattr metadata backend, use
`--allow-invalid-namespace` for the expected negative test. Use
`--allow-invalid-path` for path-resolution negative tests, and `--allow-empty`
when a scan continuation is expected to reach the end of the directory.
@@ -785,7 +784,7 @@ mars_nwe NetWare metadata helpers, routes Access through the normal file
timestamp helper, and immediately verifies the updates through AFP 2.0 Get File
Information. On Linux the source-level `org.mars-nwe.afp.*` name is stored via
the portable `user.` xattr namespace by mars_nwe's local xattr wrapper, the same
pattern Netatalk uses for its `org.netatalk.*` metadata names.
same extended-attribute naming pattern used by Apple metadata backends.
Example:
@@ -947,7 +946,7 @@ flags, are intentionally rejected for now. That keeps create/access/backup
timestamps, DOS/NetWare mode-bit mapping, enforcement, resource-fork, and
Entry-ID-only write semantics out of this conservative smoke path.
If the server was built without the optional Netatalk/libatalk backend, use
If the server was built without the optional mars_nwe AFP xattr metadata backend, use
`--allow-invalid-namespace` for the expected negative test. Use
`--allow-invalid-path` for path-resolution negative tests.