--- /dev/null
+Index: linux-2.6.16.60-0.31/fs/ext3/mballoc.c
+===================================================================
+--- linux-2.6.16.60-0.31.orig/fs/ext3/mballoc.c
++++ linux-2.6.16.60-0.31/fs/ext3/mballoc.c
+@@ -1170,7 +1170,10 @@ static inline void mb_clear_bits(spinloc
+ cur += 32;
+ continue;
+ }
+- mb_clear_bit_atomic(lock, cur, bm);
++ if (lock)
++ mb_clear_bit_atomic(lock, cur, bm);
++ else
++ mb_clear_bit(cur, bm);
+ cur++;
+ }
+ }
+@@ -1188,7 +1191,10 @@ static inline void mb_set_bits(spinlock_
+ cur += 32;
+ continue;
+ }
+- mb_set_bit_atomic(lock, cur, bm);
++ if (lock)
++ mb_set_bit_atomic(lock, cur, bm);
++ else
++ mb_set_bit(cur, bm);
+ cur++;
+ }
+ }
+@@ -2974,10 +2980,9 @@ int ext3_mb_mark_diskspace_used(struct e
+ }
+ }
+ #endif
+- mb_set_bits(sb_bgl_lock(sbi, ac->ac_b_ex.fe_group), bitmap_bh->b_data,
+- ac->ac_b_ex.fe_start, ac->ac_b_ex.fe_len);
+-
+ spin_lock(sb_bgl_lock(sbi, ac->ac_b_ex.fe_group));
++ mb_set_bits(NULL, bitmap_bh->b_data, ac->ac_b_ex.fe_start,
++ ac->ac_b_ex.fe_len);
+ if (gdp->bg_flags & cpu_to_le16(EXT3_BG_BLOCK_UNINIT)) {
+ gdp->bg_flags &= cpu_to_le16(~EXT3_BG_BLOCK_UNINIT);
+ gdp->bg_free_blocks_count =