|
@@ -500,7 +500,7 @@ static int cache_defer_cnt;
|
|
|
|
|
|
static int cache_defer_req(struct cache_req *req, struct cache_head *item)
|
|
|
{
|
|
|
- struct cache_deferred_req *dreq;
|
|
|
+ struct cache_deferred_req *dreq, *discard;
|
|
|
int hash = DFR_HASH(item);
|
|
|
|
|
|
if (cache_defer_cnt >= DFR_MAX) {
|
|
@@ -525,20 +525,20 @@ static int cache_defer_req(struct cache_req *req, struct cache_head *item)
|
|
|
list_add(&dreq->hash, &cache_defer_hash[hash]);
|
|
|
|
|
|
/* it is in, now maybe clean up */
|
|
|
- dreq = NULL;
|
|
|
+ discard = NULL;
|
|
|
if (++cache_defer_cnt > DFR_MAX) {
|
|
|
- dreq = list_entry(cache_defer_list.prev,
|
|
|
- struct cache_deferred_req, recent);
|
|
|
- list_del_init(&dreq->recent);
|
|
|
- list_del_init(&dreq->hash);
|
|
|
+ discard = list_entry(cache_defer_list.prev,
|
|
|
+ struct cache_deferred_req, recent);
|
|
|
+ list_del_init(&discard->recent);
|
|
|
+ list_del_init(&discard->hash);
|
|
|
cache_defer_cnt--;
|
|
|
}
|
|
|
spin_unlock(&cache_defer_lock);
|
|
|
|
|
|
- if (dreq) {
|
|
|
+ if (discard)
|
|
|
/* there was one too many */
|
|
|
- dreq->revisit(dreq, 1);
|
|
|
- }
|
|
|
+ discard->revisit(discard, 1);
|
|
|
+
|
|
|
if (!test_bit(CACHE_PENDING, &item->flags)) {
|
|
|
/* must have just been validated... */
|
|
|
cache_revisit_request(item);
|