While expanding b/i_unit_sz in dquot_create_oqaq(), we'd break the loop
early when the b/i_unit_sz exceeded upper limit, otherwise, qaq_b/iunit_sz
could be overflow and result in endless loop.
Signed-off-by: Niu Yawei <niu@whamcloud.com>
Change-Id: I0bf069e9259627426d7a87ec42844eaed7a733b4
Reviewed-on: http://review.whamcloud.com/1890
Tested-by: Hudson
Reviewed-by: Johann Lombardi <johann@whamcloud.com>
Reviewed-by: Fan Yong <yong.fan@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
oqaq->qaq_bunit_sz =
QUSG(oqaq->qaq_bunit_sz * cqs_factor, 1)
<< QUOTABLOCK_BITS;
+ if (oqaq->qaq_bunit_sz >= qctxt->lqc_bunit_sz)
+ break;
b_limitation = oqaq->qaq_bunit_sz * (ost_num + 1) *
shrink_qunit_limit;
}
while (ilimit > dquot->dq_dqb.dqb_curinodes
+ 2 * i_limitation) {
oqaq->qaq_iunit_sz = oqaq->qaq_iunit_sz * cqs_factor;
+ if (oqaq->qaq_iunit_sz >= qctxt->lqc_iunit_sz)
+ break;
i_limitation = oqaq->qaq_iunit_sz * mdt_num *
shrink_qunit_limit;
}