"The particular problem seems to be, when size
is computed to be zero, tsmall is not filled in with valid data,
and ProcessFS is called with a zeroed out OutStatus. This causes
the file to magically turn into a directory (VDIR), among other
things"
"The second part of the patch doesn't fix any bug that I've ran into
thus far, but seemed like a good idea while I was reading the code
to find the former bug."
/*
* Not a dynamic vnode: do the real fetch.
*/
- if (size) do {
+ do {
/*
* Locks held:
* avc->lock(R) if setLocks && !slowPass
/* Check if we need to perform any last-minute fixes with a write-lock */
if (!setLocks || doVcacheUpdate) {
if (setNewCallback) avc->callback = newCallback;
- if (tsmall) afs_ProcessFS(avc, &tsmall->OutStatus, areq);
+ if (tsmall && setVcacheStatus) afs_ProcessFS(avc, &tsmall->OutStatus, areq);
if (setLocks) ReleaseWriteLock(&avc->lock);
}