Skip to content
Snippets Groups Projects
Commit 1c60c2ef authored by Johann Lombardi's avatar Johann Lombardi
Browse files

Branch b1_6

b=17030
i=johann (original patch from Tianzy)
i=andrew

qctxt_wait_pending_dqacq() must return the same value as schedule_dqacq()
otherwise ost threads can be stuck in got_qunit() for a long time,
causing a watchdog storm during failover.
parent 0c37752e
No related branches found
No related tags found
No related merge requests found
......@@ -1054,6 +1054,7 @@ qctxt_wait_pending_dqacq(struct lustre_quota_ctxt *qctxt, unsigned int id,
struct timeval work_end;
long timediff;
struct l_wait_info lwi = { 0 };
int rc = 0;
ENTRY;
do_gettimeofday(&work_start);
......@@ -1086,6 +1087,13 @@ qctxt_wait_pending_dqacq(struct lustre_quota_ctxt *qctxt, unsigned int id,
isblk ? LQUOTA_WAIT_PENDING_BLK_QUOTA :
LQUOTA_WAIT_PENDING_INO_QUOTA,
timediff);
/* keep same as schedule_dqacq() b=17030 */
spin_lock(&qunit->lq_lock);
if (qunit->lq_rc == 0)
rc = -EAGAIN;
else
rc = qunit->lq_rc;
spin_unlock(&qunit->lq_lock);
} else {
do_gettimeofday(&work_end);
timediff = cfs_timeval_sub(&work_end, &work_start, NULL);
......@@ -1095,7 +1103,7 @@ qctxt_wait_pending_dqacq(struct lustre_quota_ctxt *qctxt, unsigned int id,
timediff);
}
RETURN(0);
RETURN(rc);
}
int
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment