Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd68c374 authored by NeilBrown's avatar NeilBrown Committed by J. Bruce Fields
Browse files

sunrpc/cache: avoid variable over-loading in cache_defer_req



In cache_defer_req, 'dreq' is used for two significantly different
values that happen to be of the same type.

This is both confusing, and makes it hard to extend the range of one of
the values as we will in the next patch.
So introduce 'discard' to take one of the values.

Signed-off-by: default avatarNeilBrown <neilb@suse.de>
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent 67e7328f
Loading
Loading
Loading
Loading
+9 −9
Original line number Original line Diff line number Diff line
@@ -500,7 +500,7 @@ static int cache_defer_cnt;


static int cache_defer_req(struct cache_req *req, struct cache_head *item)
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);
	int hash = DFR_HASH(item);


	if (cache_defer_cnt >= DFR_MAX) {
	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]);
	list_add(&dreq->hash, &cache_defer_hash[hash]);


	/* it is in, now maybe clean up */
	/* it is in, now maybe clean up */
	dreq = NULL;
	discard = NULL;
	if (++cache_defer_cnt > DFR_MAX) {
	if (++cache_defer_cnt > DFR_MAX) {
		dreq = list_entry(cache_defer_list.prev,
		discard = list_entry(cache_defer_list.prev,
				     struct cache_deferred_req, recent);
				     struct cache_deferred_req, recent);
		list_del_init(&dreq->recent);
		list_del_init(&discard->recent);
		list_del_init(&dreq->hash);
		list_del_init(&discard->hash);
		cache_defer_cnt--;
		cache_defer_cnt--;
	}
	}
	spin_unlock(&cache_defer_lock);
	spin_unlock(&cache_defer_lock);


	if (dreq) {
	if (discard)
		/* there was one too many */
		/* there was one too many */
		dreq->revisit(dreq, 1);
		discard->revisit(discard, 1);
	}

	if (!test_bit(CACHE_PENDING, &item->flags)) {
	if (!test_bit(CACHE_PENDING, &item->flags)) {
		/* must have just been validated... */
		/* must have just been validated... */
		cache_revisit_request(item);
		cache_revisit_request(item);