DF-3059
dirfs_setattr chtimes ignores the requested va_atime/va_mtime entirely — lutimes(path, NULL) always stamps 'now' (utimensat/UTIME_OMIT semantics unimplemented)
Summary
The chtimes branch of dirfs_setattr (:556-568) passes the vnode to dirfs_node_chtimes, which calls lutimes(tmp, NULL) (dirfs_subr.c:661) - the times the caller supplied in vap are never read. Every utimes/utimensat/futimens on a dirfs file silently degrades to a 'touch'. Permission checking happens correctly at the syscall layer (NLC_OWN|NLC_WRITE), so this is a contract/integrity bug - the inverse-direction sibling of tmpfs DF-3024. Timestamp-sensitive tooling silently misbehaves on dirfs (tar -m/rsync -t restores, make -t, incremental backups - mtimes forged to 'now', defeating mtime-based change detection). Fix: pass the requested times through (tv[2] from vap, VA_UTIMES_NULL -> NULL) or fail EOPNOTSUPP on explicit times.
No comments yet.