b = blk;
while (b) {
- if (credits <= 0)
- need += !test_bit(B_Credit, &b->flags);
- else if (!test_and_set_bit(B_Credit, &b->flags))
- credits--;
- if (credits <= 0)
- need += !test_bit(B_ICredit, &b->flags);
- else if (!test_and_set_bit(B_ICredit, &b->flags))
- credits--;
-
+ if (!test_bit(B_Dirty, &b->flags)) {
+ if (credits <= 0)
+ need += !test_bit(B_Credit, &b->flags);
+ else if (!test_and_set_bit(B_Credit, &b->flags))
+ credits--;
+ }
+ if (!test_bit(B_UnincCredit, &b->flags)) {
+ if (credits <= 0)
+ need += !test_bit(B_ICredit, &b->flags);
+ else if (!test_and_set_bit(B_ICredit, &b->flags))
+ credits--;
+ }
if (test_bit(B_Index, &b->flags) ||
LAFSI(b->inode)->type == TypeOrphanList ||
LAFSI(b->inode)->type == TypeQuota ||