docs: clarify NSS feature scope after namespaces

This commit is contained in:
Mario Fetka
2026-06-11 13:38:04 +00:00
parent 8858a8a096
commit 0474e2fa81
3 changed files with 47 additions and 2 deletions

4
AI.md
View File

@@ -60,6 +60,10 @@ Namespace adaptation order:
After the namespace line is underway, continue with the rest of the useful NSS areas in this order: `netware.metadata`/trustee effective rights, directory quota semantics from `dirQuotas.c`, data streams and extended attributes, object IDs/search maps/salvage, then compression and NSS authsys/eDirectory-style identity work.
NCP scope note after checking `ncp__enu.pdf`: directory disk-space restrictions are not only a NetWare 5.x feature. The old file-system-extension calls are in the NetWare 3.x/4.x scope (`22/35` Get Directory Disk Space Restriction, `22/36` Set Directory Disk Space Restriction, `22/40` Scan Directory Disk Space), and the namespace-aware `87/39` Get Directory Disk Space Restriction is in NetWare 4.x/5.x scope. Still, do not wire directory quotas into active NCP enforcement until after DOS/LONG namespaces and the file-metadata/trustee base are stable. It is OK to directly adapt the useful NSS `dirQuotas.c` pieces into libnwfs earlier, but only behind lib/CTest plausibility tests that link the library and verify the data model/check math; leave the NCP endpoints disconnected until a later dedicated patch.
For NSS pieces that are outside the current NetWare 1.x-4.x target or that require a real backend (for example compression statistics/active compression state, eDirectory/authsys identity, and later server-management selectors), keep the adapted code dormant and covered by compile/link/logic CTests only. Do not expose fake NCP data for those features.
## Current handoff status after patch 0222
The current accepted patch line in this chat is expected to include:

View File

@@ -3305,3 +3305,27 @@ This keeps the backend boundaries clear:
- `nwquota.c/h`: NetWare metadata storage and metadata accounting.
- `lnxquota.c/h`: Linux `quotactl()` access only.
- future `bsdquota.c/h`: BSD-specific quota access only.
## NSS/libnwfs feature scope after namespace work
The next implementation line starts with NSS-derived namespaces, but the rest of
NSS should be mined in a way that keeps protocol scope and backend readiness
separate.
Directory disk-space restrictions are a good example. They are not solely a
NetWare 5.x feature in the NCP reference: classic directory disk-space
restriction calls exist in the NetWare 3.x/4.x family, and the namespace-aware
variant exists in the NetWare 4.x family. Therefore the `dirQuotas.c` model is
worth adapting into libnwfs. However, it should first land as library code with
CTest plausibility tests only. The CTests should link libnwfs and verify the
core arithmetic and model semantics: 4K block units, unlimited values, parent
restriction scanning, smallest available restriction selection, and over-limit
result calculation. The live NCP endpoints should remain disconnected until the
DOS/LONG namespace layer and file metadata/trustee layer are stable.
For later NSS pieces such as data streams, extended attributes, object IDs,
search maps, salvage and compression, use the same pattern: direct adaptation
into mars-nwe/libnwfs files, compile/link/logic CTests while dormant, and no
NCP-visible claims until the backend can answer truthfully. Compression in
particular must not synthesize fake current-compression files, decompression
lists or counters just to satisfy management selectors.

21
TODO.md
View File

@@ -2310,10 +2310,27 @@ After namespace starts, continue with the next useful NSS areas in this order:
1. NetWare/NSS file metadata and trustee effective-rights backend.
2. Directory quota semantics from `dirQuotas.c` and related create/write/rename
placement in `comnFile.c`, `comnIO.c` and `comnRename.c`.
- `ncp__enu.pdf` shows directory disk-space restrictions in the current
NetWare 1.x-4.x compatibility scope: the classic `22/35`, `22/36` and
`22/40` calls are listed for NetWare 3.x/4.x/5.x, and the namespace-aware
`87/39` variant is listed for NetWare 4.x/5.x.
- Nevertheless, keep directory quotas disconnected from live NCP endpoints
for now. Adapt the useful NSS/libnwfs code early if it is low-risk, but
prove only the library model with CTest first: link libnwfs, create a small
metadata-backed directory quota object, verify 4K block rounding, parent
restriction selection, used/available arithmetic, unlimited handling, and
over-limit decisions.
- Only wire `22/35`, `22/36`, `22/40` and `87/39` after DOS/LONG namespace
and file-metadata/trustee behaviour are stable.
3. Data streams, Extended Attributes, object IDs, search maps and salvage
references from `comnDataStream.c`, `extAttrBeast.c`, `objectIDStore.c`,
`searchMap.c` and related files.
4. Compression only after compressed-file attributes become a real target.
`searchMap.c` and related files. For pieces not ready for NCP exposure, add
compile/link/plausibility CTests and keep the NCP endpoints disconnected.
4. Compression material can be kept as dormant lib code or references only.
Compression-related NCPs must not fake
active compression files, decompression lists, counters or byte counts without
a real backend. Wire compression only after compressed-file attributes and
compressed stream accounting become a real target.
5. NSS authsys/eDirectory identity work only after classic bindery/NDS object-ID
compatibility remains stable.