[LU-5696] missing wakeup for ptlrpc_check_set Created: 01/Oct/14 Updated: 19/Mar/19 Resolved: 05/Dec/14 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | Lustre 2.7.0 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Liang Zhen (Inactive) | Assignee: | Liang Zhen (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Severity: | 3 | ||||||||
| Rank (Obsolete): | 15943 | ||||||||
| Description |
|
Although very liketly, but there is no guarantee that request_out_callback will happen before reply_in_callback, if a request got reply before got request_out_callback(), then ptlrpc_unregister_reply() will return false because request has not been unlinked and req:;rq_req_unlink is not set to false. static inline int
ptlrpc_client_recv_or_unlink(struct ptlrpc_request *req)
{
int rc;
spin_lock(&req->rq_lock);
......
rc = req->rq_receiving_reply ;
rc = rc || req->rq_req_unlink || req->rq_reply_unlink;
spin_unlock(&req->rq_lock);
return rc;
}
After this, even request_in_callback() happened, there is no wakeup for this request, ptlrpcd or app thread will keep waiting. |
| Comments |
| Comment by Liang Zhen (Inactive) [ 01/Oct/14 ] |
|
patch is here: http://review.whamcloud.com/12158 |
| Comment by Gerrit Updater [ 28/Nov/14 ] |
|
Liang Zhen (liang.zhen@intel.com) uploaded a new patch: http://review.whamcloud.com/12874 |
| Comment by Gerrit Updater [ 05/Dec/14 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/12158/ |
| Comment by Peter Jones [ 05/Dec/14 ] |
|
Landed for 2.7 |
| Comment by Chris Horn [ 05/Dec/14 ] |
|
Duplicate of |
| Comment by Liang Zhen (Inactive) [ 09/Dec/14 ] |
|
Chris, yes I believe so |