diff options
| -rw-r--r-- | net/sunrpc/cache.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index ade8a7e99cd3..1a50dfe6dc6e 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c | |||
| @@ -255,7 +255,7 @@ int cache_check(struct cache_detail *detail, | |||
| 255 | } | 255 | } |
| 256 | 256 | ||
| 257 | if (rv == -EAGAIN) { | 257 | if (rv == -EAGAIN) { |
| 258 | if (cache_defer_req(rqstp, h) == 0) { | 258 | if (cache_defer_req(rqstp, h) < 0) { |
| 259 | /* Request is not deferred */ | 259 | /* Request is not deferred */ |
| 260 | rv = cache_is_valid(detail, h); | 260 | rv = cache_is_valid(detail, h); |
| 261 | if (rv == -EAGAIN) | 261 | if (rv == -EAGAIN) |
| @@ -511,11 +511,11 @@ static int cache_defer_req(struct cache_req *req, struct cache_head *item) | |||
| 511 | * or continue and drop the oldest below | 511 | * or continue and drop the oldest below |
| 512 | */ | 512 | */ |
| 513 | if (net_random()&1) | 513 | if (net_random()&1) |
| 514 | return 0; | 514 | return -ENOMEM; |
| 515 | } | 515 | } |
| 516 | dreq = req->defer(req); | 516 | dreq = req->defer(req); |
| 517 | if (dreq == NULL) | 517 | if (dreq == NULL) |
| 518 | return 0; | 518 | return -ENOMEM; |
| 519 | 519 | ||
| 520 | dreq->item = item; | 520 | dreq->item = item; |
| 521 | 521 | ||
| @@ -545,9 +545,9 @@ static int cache_defer_req(struct cache_req *req, struct cache_head *item) | |||
| 545 | if (!test_bit(CACHE_PENDING, &item->flags)) { | 545 | if (!test_bit(CACHE_PENDING, &item->flags)) { |
| 546 | /* must have just been validated... */ | 546 | /* must have just been validated... */ |
| 547 | cache_revisit_request(item); | 547 | cache_revisit_request(item); |
| 548 | return 0; | 548 | return -EAGAIN; |
| 549 | } | 549 | } |
| 550 | return 1; | 550 | return 0; |
| 551 | } | 551 | } |
| 552 | 552 | ||
| 553 | static void cache_revisit_request(struct cache_head *item) | 553 | static void cache_revisit_request(struct cache_head *item) |
