* fix(mount): retain refused async metadata before releasing handle
* mount: sync the failed-metadata directories with util.FsyncDir
Directory fsync fails on Windows, where the mount also builds, and returns
EINVAL on some filesystems. Either kept the retention loop retrying a record
that could never be saved, so the drain never finished.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* mount: keep failed-metadata records in a per-user directory
The write cache root defaults to the shared temp directory. The first mount
to save a record created failed-metadata there as 0700, so another user's
mount could never save one and its drain retried forever.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* mount: drop the async conflict probe test
TestContentAsyncConflictKeepsRecoveryRecord drives the same refused drain
with the retry backoff stubbed out; the probe slept through the real backoff
(7 s) and its kept-handle branch could not run. Its peer-entry check moves
into the recovery record test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Chris Lu <chrislusf@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>