From 471ad1f679ad7c0193785f82abf6f249ffeb1e79 Mon Sep 17 00:00:00 2001 From: Andriy Skulysh Date: Thu, 14 May 2015 14:06:16 +0300 Subject: [PATCH] LU-6433 quota: handle QUOTA_DQACQ in READPAGE portal MDS sends quota request to quota master, which can be the same host. Deadlock is possible if all other MDS threads are waiting for lock taken by first thread. Lets use MDS_READPAGE portal to avoid the deadlock. Xyratex-bug-id: MRP-2433 Change-Id: Ib2266a6771cfc5a70bae23206b1144bfd45f9ff3 Signed-off-by: Andriy Skulysh Reviewed-on: http://review.whamcloud.com/14369 Reviewed-by: Niu Yawei Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Ann Koehler Reviewed-by: Oleg Drokin --- lustre/quota/qsd_request.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lustre/quota/qsd_request.c b/lustre/quota/qsd_request.c index 8666cfc..1abc4eb 100644 --- a/lustre/quota/qsd_request.c +++ b/lustre/quota/qsd_request.c @@ -113,6 +113,7 @@ int qsd_send_dqacq(const struct lu_env *env, struct obd_export *exp, GOTO(out, rc); } + req->rq_request_portal = MDS_READPAGE_PORTAL; req_qbody = req_capsule_client_get(&req->rq_pill, &RMF_QUOTA_BODY); *req_qbody = *qbody; @@ -231,6 +232,7 @@ int qsd_intent_lock(const struct lu_env *env, struct obd_export *exp, ptlrpc_request_free(req); GOTO(out, rc); } + req->rq_request_portal = MDS_READPAGE_PORTAL; lit = req_capsule_client_get(&req->rq_pill, &RMF_LDLM_INTENT); lit->opc = (__u64)it_op; -- 1.8.3.1