server, to faster identify duplicate connections or reconnects,
also to faster find export to evict in manual eviction case.
+Severity : normal
+Bugzilla : 11190
+Description: Sometimes, when the server evict a client, and the client will
+ not be evicted as soon as possible.
+Details : In enqueue req, the error was returned by intent, instead of
+ rq_status which make ptlrpc layer not detect this error, and
+ does not evict the client. So enqueue error should be returned
+ by rq_status.
--------------------------------------------------------------------------------
EXIT;
out:
- req->rq_status = err;
+ req->rq_status = rc ?: err; /* return either error - bug 11190 */
if (req->rq_reply_state == NULL) {
err = lustre_pack_reply(req, 1, NULL, NULL);
if (rc == 0)
rc = err;
- req->rq_status = rc;
}
/* The LOCK_CHANGED code in ldlm_lock_enqueue depends on this
lockreq->lock_flags |= LDLM_FL_INTENT_ONLY;
}
- /* This can go when we're sure that this can never happen */
- LASSERT(rc != -ENOENT);
if (rc == ELDLM_LOCK_ABORTED) {
einfo->ei_mode = 0;
memset(lockh, 0, sizeof(*lockh));
/* If there was an error of some sort or if we are not
* returning any locks */
- if (rep->lock_policy_res2 ||
- !intent_disposition(rep, DISP_OPEN_LOCK))
+ if (rep->lock_policy_res2)
+ RETURN(rep->lock_policy_res2);
+ if (!intent_disposition(rep, DISP_OPEN_LOCK))
RETURN(ELDLM_LOCK_ABORTED);
break;
case IT_LOOKUP: