This reverts commit
5ba144bcf9e4df4c0ac960b2dd885649c040be25 which
does fix a real problem but unfortunately unmasks another one.
This is a 1.6 only change. A proper fix will hopefully be developed
on the master branch and then backported.
Change-Id: I81d4af8c07dbd983ea693f5e1de112830c2b6794
Reviewed-on: https://gerrit.openafs.org/12323
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
* this out, since the iocount we have to hold makes it
* always "fail" */
if (AFSTOV(avc) == tvp) {
- /* Caller will move this vcache to the head of the VLRU. */
+ if (*slept) {
+ QRemove(&avc->vlruq);
+ QAdd(&VLRU, &avc->vlruq);
+ }
return 0;
} else
return 1;
afs_ShakeLooseVCaches(afs_int32 anumber)
{
afs_int32 i, loop;
- int evicted;
struct vcache *tvc;
struct afs_q *tq, *uq;
int fv_slept, defersleep = 0;
}
fv_slept = 0;
- evicted = osi_TryEvictVCache(tvc, &fv_slept, defersleep);
- if (evicted) {
+ if (osi_TryEvictVCache(tvc, &fv_slept, defersleep))
anumber--;
- }
if (fv_slept) {
if (loop++ > 100)
break;
- if (!evicted) {
- /*
- * This vcache was busy and we slept while trying to evict it.
- * Move this busy vcache to the head of the VLRU so vcaches
- * following this busy vcache can be evicted during the retry.
- */
- QRemove(&tvc->vlruq);
- QAdd(&VLRU, &tvc->vlruq);
- }
goto retry; /* start over - may have raced. */
}
if (uq == &VLRU) {