This backlog translates the review into an implementation plan with clear tickets and acceptance criteria.
- Problem:
FS.MVcurrently allows moving a directory into its own subtree. - Scope:
- Reject
dstifdst == srcordstis undersrc/. - Add regression tests.
- Reject
- Acceptance:
FS.MV key /a /a/breturns error.- Existing tree remains intact after rejected move.
- Problem: deep paths could be silently truncated during normalization.
- Scope:
- Make normalization fail when depth exceeds
FS_MAX_PATH_DEPTH. - Return deterministic user error.
- Add tests that verify no truncated alias is created.
- Make normalization fail when depth exceeds
- Acceptance:
- Too-deep path returns
ERR path depth exceeds limit. - No inode is created for either full or truncated path.
- Too-deep path returns
- Problem:
CHMODandCHOWNcurrently accept malformed or out-of-range input. - Scope:
CHMOD: require strict octal parse in[0000, 07777].CHOWN: reject negative and>UINT32_MAXvalues.- Add regression tests.
- Acceptance:
- Invalid mode strings fail without mutating inode mode.
- Invalid uid/gid fail without mutating ownership.
- Problem:
CPdid not preserve full metadata. - Scope:
- Preserve
uid/gid/mode/ctime/mtime/atimefor files, dirs, and symlinks. - Propagate copy failures to caller.
- Add regression tests.
- Preserve
- Acceptance:
FS.STATfields match on source and copied destination (except path).- Recursive copy failure returns error, not silent success.
- Add tests for
FS.TRUNCATEandFS.UTIMENSedge cases. - Acceptance:
- Shrink/extend/zero semantics verified.
-1UTIME_OMIT semantics verified.
- Add test utility to verify:
- each child entry resolves to inode,
- each non-root inode is referenced by exactly one parent child list.
- Acceptance:
- Utility runs after
MV/CP/RM RECURSIVEtests.
- Utility runs after
- Automate:
- module build,
- Redis boot with module,
- Python integration suite,
- Go mount unit tests.
- Acceptance:
- CI fails on any regression.
- Implement
--allow-otherand--foregroundbehavior. - Acceptance:
- Effective mount options reflect CLI flags.
- Invalidate subtree caches on rename/remove recursive operations.
- Acceptance:
- No stale lookups after subtree moves/deletes.
- Introduce ranged read/write server APIs and use them in FUSE handle path.
- Acceptance:
- No full-file rewrite for small writes.
- Better concurrent writer behavior.
- Move from path-keyed canonical storage to inode-id + dir-entry relations.
- Acceptance:
- Simpler rename semantics and lower duplication.
- Foundation for hard links/xattrs.
- Add migrator/compat mode for old
redis-fs0encoding versions. - Acceptance:
- Existing RDB data loads and migrates without data loss.
- Add
FS.CHECKandFS.REPAIR. - Acceptance:
- Detects and repairs reference inconsistencies.
- Add chunked file payload mode and optional batched recursive operations.
- Acceptance:
- Predictable latency under large files/subtrees.