From 85ea3dd8637593a58c001552dd32b348a174be68 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Sun, 31 May 2026 04:53:06 +0000 Subject: [PATCH] tests: record AFP metadata entry-id resolver smoke success --- TODO.md | 17 +++++++++++++++++ tests/linux/README.md | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/TODO.md b/TODO.md index 88f145a..f64f166 100644 --- a/TODO.md +++ b/TODO.md @@ -578,6 +578,23 @@ Access Date/Time remained on the normal file `atime` path and did not create an AFP metadata xattr. + +### AFP metadata entry-id resolver convergence + +AFP Get File Information and AFP Set File Information now accept entry-id-only +requests for regular files whose AFP ID is present in the mars_nwe AFP entry-id +xattr metadata. The shared resolver converts the AFP file Entry ID back to a +normal `VOL:PATH` string and then routes the operation through the existing +NetWare metadata paths. Regular file Entry IDs are not treated as DOS namespace +directory numbers. + +Runtime status: the full AFP smoke suite is verified with `failures=0` after +adding entry-id-only coverage for Get File Information, Set File Information +FinderInfo, and Set File Information Hidden. The verified run used AFP Entry ID +`0x05aaace0` for `SYS:PUBLIC/pmdflts.ini`; the server log shows the resolver +feeding `SYS:PUBLIC/PMDFLTS.INI` into Get/Set File Information before applying +the normal FinderInfo and NetWare attribute paths. + ### AFP Set File Information WebSDK layout convergence AFP Set File Information now requires the fixed WebSDK/NWAFP packet layouts for diff --git a/tests/linux/README.md b/tests/linux/README.md index 16ae3b6..0881b7a 100644 --- a/tests/linux/README.md +++ b/tests/linux/README.md @@ -1174,3 +1174,39 @@ timestamp fields continue to use the existing NetWare metadata paths. AFP remains behind the existing build configuration; this smoke only records that the implemented AFP endpoints no longer need a Netatalk/libatalk metadata backend when xattr support is enabled. + +## AFP metadata entry-id resolver smoke success + +AFP metadata endpoints now share the same file Entry ID resolver that was first +used by AFP Open File Fork. Regular file Entry IDs are reverse-resolved through +the mars_nwe AFP entry-id xattr metadata and then routed back into the normal +NetWare path-based helpers. They are not interpreted as DOS namespace directory +numbers. + +Verified smoke run: + +```text +AFP Get File Information by Entry ID +AFP File Info subfunction=0x05 path=SYS:PUBLIC/pmdflts.ini entry_id=0x05aaace0 parent_id=0x00000000 attrs=0x2000 data_len=8161 resource_len=0 offspring=0 long_name=PMDFLTS.INI short_name=PMDFLTS.INI rights=0x9f00 reply_len=114 entry-id-only + +AFP Set File Information FinderInfo by Entry ID +AFP Set File Info subfunction=0x10 layout=websdk path=SYS:PUBLIC/pmdflts.ini bitmap=0x4000 attrs=0x2000 create=0x5cbf access=0x5cbf modify=0x5cbf35da backup=0x00000000 finder_type=TEXT finder_creator=MARS entry_id=0x05aaace0 verified entry-id-only + +AFP Set File Information Hidden by Entry ID +AFP Set File Info subfunction=0x10 layout=websdk path=SYS:PUBLIC/pmdflts.ini bitmap=0x0100 attrs=0x2200 create=0x5cbf access=0x5cbf modify=0x5cbf35da backup=0x00000000 finder_type=TEXT finder_creator=MARS entry_id=0x05aaace0 verified entry-id-only + +Summary: failures=0 +``` + +The server log for the same run shows the shared resolver feeding normal +metadata operations with a resolved AFP/NetWare path: + +```text +AFP Get File Information: vol=0 entry=0x05aaace0 mask=0xffff path='SYS:PUBLIC/PMDFLTS.INI' reply_entry=0x05aaace0 +AFP 2.0 Set File Information: vol=0 request_vol=0 entry=0x05aaace0 mask=0x4000 path='SYS:PUBLIC/PMDFLTS.INI' layout=websdk finder_info attrs=0x0000 atime=-1 mtime=-1 +AFP 2.0 Set File Information: vol=0 request_vol=0 entry=0x05aaace0 mask=0x0100 path='SYS:PUBLIC/PMDFLTS.INI' layout=websdk attributes attrs=0x8200 atime=-1 mtime=-1 +``` + +Directory Entry IDs continue to use the existing namespace/basehandle path. +Regular file Entry IDs continue to be AFP metadata IDs stored in +`user.org.mars-nwe.afp.entry-id`.