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 =