- quota_search_lqs(&qdata[i], NULL, qctxt, &lqs);
- if (lqs) {
- int flag = 0;
- spin_lock(&lqs->lqs_lock);
- if (isblk) {
- if (lqs->lqs_bwrite_pending >= pending) {
- lqs->lqs_bwrite_pending -= pending;
- spin_unlock(&lqs->lqs_lock);
- flag = 1;
- } else {
- spin_unlock(&lqs->lqs_lock);
- CDEBUG(D_ERROR,
- "there are too many blocks!\n");
- }
- } else {
- if (lqs->lqs_iwrite_pending >= pending) {
- lqs->lqs_iwrite_pending -= pending;
- spin_unlock(&lqs->lqs_lock);
- flag = 1;
- } else {
- spin_unlock(&lqs->lqs_lock);
- CDEBUG(D_ERROR,
- "there are too many files!\n");
- }
- }
- CDEBUG(D_QUOTA, "lqs pending: %lu, pending: %d, "
- "isblk: %d.\n",
- isblk ? lqs->lqs_bwrite_pending :
- lqs->lqs_iwrite_pending, pending, isblk);
+ lqs = quota_search_lqs(LQS_KEY(i, qdata[i].qd_id), qctxt, 0);
+ if (lqs == NULL || IS_ERR(lqs)) {
+ CERROR("can not find lqs for pending_commit: "
+ "[id %u] [%c] [pending %u] [isblk %d] (rc %ld), "
+ "maybe cause unexpected lqs refcount error!\n",
+ id[i], i ? 'g': 'u', pending[i], isblk,
+ lqs ? PTR_ERR(lqs) : -1);
+ continue;
+ }