[PATCH] knfsd: Convert sunrpc_cache to use krefs
.. it makes some of the code nicer.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
index edcda4f..dd81e59 100644
--- a/net/sunrpc/cache.c
+++ b/net/sunrpc/cache.c
@@ -42,7 +42,7 @@
time_t now = get_seconds();
h->next = NULL;
h->flags = 0;
- atomic_set(&h->refcnt, 1);
+ kref_init(&h->ref);
h->expiry_time = now + CACHE_NEW_EXPIRY;
h->last_refresh = now;
}
@@ -81,7 +81,7 @@
if (detail->match(tmp, key)) {
cache_get(tmp);
write_unlock(&detail->hash_lock);
- detail->cache_put(new, detail);
+ cache_put(new, detail);
return tmp;
}
}
@@ -145,7 +145,7 @@
/* We need to insert a new entry */
tmp = detail->alloc();
if (!tmp) {
- detail->cache_put(old, detail);
+ cache_put(old, detail);
return NULL;
}
cache_init(tmp);
@@ -165,7 +165,7 @@
write_unlock(&detail->hash_lock);
cache_fresh_unlocked(tmp, detail, is_new);
cache_fresh_unlocked(old, detail, 0);
- detail->cache_put(old, detail);
+ cache_put(old, detail);
return tmp;
}
EXPORT_SYMBOL(sunrpc_cache_update);
@@ -234,7 +234,7 @@
cache_defer_req(rqstp, h);
if (rv)
- detail->cache_put(h, detail);
+ cache_put(h, detail);
return rv;
}
@@ -431,7 +431,7 @@
if (test_and_clear_bit(CACHE_PENDING, &ch->flags))
queue_loose(current_detail, ch);
- if (atomic_read(&ch->refcnt) == 1)
+ if (atomic_read(&ch->ref.refcount) == 1)
break;
}
if (ch) {
@@ -446,7 +446,7 @@
current_index ++;
spin_unlock(&cache_list_lock);
if (ch)
- d->cache_put(ch, d);
+ cache_put(ch, d);
} else
spin_unlock(&cache_list_lock);
@@ -723,7 +723,7 @@
!test_bit(CACHE_PENDING, &rq->item->flags)) {
list_del(&rq->q.list);
spin_unlock(&queue_lock);
- cd->cache_put(rq->item, cd);
+ cache_put(rq->item, cd);
kfree(rq->buf);
kfree(rq);
} else
@@ -906,7 +906,7 @@
continue;
list_del(&cr->q.list);
spin_unlock(&queue_lock);
- detail->cache_put(cr->item, detail);
+ cache_put(cr->item, detail);
kfree(cr->buf);
kfree(cr);
return;
@@ -1192,7 +1192,7 @@
ifdebug(CACHE)
seq_printf(m, "# expiry=%ld refcnt=%d flags=%lx\n",
- cp->expiry_time, atomic_read(&cp->refcnt), cp->flags);
+ cp->expiry_time, atomic_read(&cp->ref.refcount), cp->flags);
cache_get(cp);
if (cache_check(cd, cp, NULL))
/* cache_check does a cache_put on failure */