[LU-5633] not taking rq_lock when modify rq_resend Created: 17/Sep/14  Updated: 19/Feb/15  Resolved: 19/Feb/15

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.7.0
Fix Version/s: Lustre 2.7.0

Type: Bug Priority: Minor
Reporter: Niu Yawei (Inactive) Assignee: Niu Yawei (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Severity: 3
Rank (Obsolete): 15758

 Description   

In after_reply():

        /* retry indefinitely on EINPROGRESS */
        if (lustre_msg_get_status(req->rq_repmsg) == -EINPROGRESS &&
            ptlrpc_no_resend(req) == 0 && !req->rq_no_retry_einprogress) {
                time_t  now = cfs_time_current_sec();

                DEBUG_REQ(D_RPCTRACE, req, "Resending request on EINPROGRESS");
                req->rq_resend = 1;
                req->rq_nr_resend++;

rq_lock should be taken before modify rq_resend.



 Comments   
Comment by Niu Yawei (Inactive) [ 17/Sep/14 ]

http://review.whamcloud.com/11957

Comment by Liang Zhen (Inactive) [ 18/Sep/14 ]

probably nobody can race on it at this point?

Comment by Niu Yawei (Inactive) [ 18/Sep/14 ]

probably nobody can race on it at this point?

Looks it can race with ptlrpc_resend() -> ptlrpc_resend_req().

Comment by Jodi Levi (Inactive) [ 19/Feb/15 ]

Patch landed to Master.

Generated at Sat Feb 10 01:53:11 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.