lock = ldlm_handle2lock(&dlm_req->lock_handle[i]);
if (!lock) {
/* below message checked in replay-single.sh test_36 */
- LDLM_DEBUG_NOLOCK("server-side cancel handler stale lock (cookie %llu)",
+ LDLM_DEBUG_NOLOCK("server-side cancel handler stale lock (cookie %llx)",
dlm_req->lock_handle[i].cookie);
continue;
}
+ if (lock->l_export != req->rq_export) {
+ LDLM_DEBUG_NOLOCK("server-side cancel mismatched export (cookie %llx)",
+ dlm_req->lock_handle[i].cookie);
+ LDLM_LOCK_PUT(lock);
+ continue;
+ }
res = lock->l_resource;
done++;
ktime_t arrived;
s64 timediff_usecs;
s64 arrived_usecs;
+ __u32 op;
int fail_opc = 0;
struct obd_device *obd = NULL;
if (request->rq_export)
obd = request->rq_export->exp_obd;
+ op = lustre_msg_get_opc(request->rq_reqmsg);
+
if (CFS_FAIL_CHECK(OBD_FAIL_PTLRPC_HPREQ_NOTIMEOUT))
fail_opc = OBD_FAIL_PTLRPC_HPREQ_NOTIMEOUT;
else if (CFS_FAIL_CHECK(OBD_FAIL_PTLRPC_HPREQ_TIMEOUT))
* Discard requests queued for longer than the deadline.
* The deadline is increased if we send an early reply.
*/
- if (ktime_get_real_seconds() > request->rq_deadline) {
+ if (op != LDLM_CANCEL &&
+ ktime_get_real_seconds() > request->rq_deadline) {
DEBUG_REQ(D_ERROR, request,
"Dropping timed-out request from %s: deadline %lld/%llds ago",
libcfs_idstr(&request->rq_peer),
(request->rq_export ?
refcount_read(&request->rq_export->exp_handle.h_ref) : -99),
lustre_msg_get_status(request->rq_reqmsg), request->rq_xid,
- libcfs_idstr(&request->rq_peer),
- lustre_msg_get_opc(request->rq_reqmsg),
+ libcfs_idstr(&request->rq_peer), op,
lustre_msg_get_jobid(request->rq_reqmsg) ?: "");
- if (lustre_msg_get_opc(request->rq_reqmsg) != OBD_PING)
+ if (op != OBD_PING)
CFS_FAIL_TIMEOUT_MS(OBD_FAIL_PTLRPC_PAUSE_REQ, cfs_fail_val);
CDEBUG(D_NET, "got req %llu\n", request->rq_xid);
refcount_read(&request->rq_export->exp_handle.h_ref) : -99),
lustre_msg_get_status(request->rq_reqmsg),
request->rq_xid,
- libcfs_idstr(&request->rq_peer),
- lustre_msg_get_opc(request->rq_reqmsg),
+ libcfs_idstr(&request->rq_peer), op,
lustre_msg_get_jobid(request->rq_reqmsg) ?: "",
timediff_usecs,
arrived_usecs,
(request->rq_repmsg ?
lustre_msg_get_status(request->rq_repmsg) : -999));
if (likely(svc->srv_stats != NULL && request->rq_reqmsg != NULL)) {
- __u32 op = lustre_msg_get_opc(request->rq_reqmsg);
int opc = opcode_offset(op);
if (opc > 0 && !(op == LDLM_ENQUEUE || op == MDS_REINT)) {