diff options
Diffstat (limited to 'net/ceph/osd_client.c')
| -rw-r--r-- | net/ceph/osd_client.c | 6 | 
1 files changed, 6 insertions, 0 deletions
| diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 7330c2757c0c..ce310eee708d 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c @@ -1085,9 +1085,15 @@ static void handle_timeout(struct work_struct *work)  		req = list_entry(osdc->req_lru.next, struct ceph_osd_request,  				 r_req_lru_item); +		/* hasn't been long enough since we sent it? */  		if (time_before(jiffies, req->r_stamp + timeout))  			break; +		/* hasn't been long enough since it was acked? */ +		if (req->r_request->ack_stamp == 0 || +		    time_before(jiffies, req->r_request->ack_stamp + timeout)) +			break; +  		BUG_ON(req == last_req && req->r_stamp == last_stamp);  		last_req = req;  		last_stamp = req->r_stamp; | 
