use the BUFFER_FNS functions (set_buffer_foo) to set buffer head state atomically, not the nonatomic __set_bit. Alex, please speak up if you had a good reason for __set_bit() :) Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- Index: linux-2.6/fs/ext4/extents.c =================================================================== --- linux-2.6.orig/fs/ext4/extents.c 2008-06-05 13:44:20.000000000 -0500 +++ linux-2.6/fs/ext4/extents.c 2008-06-09 15:53:11.060045685 -0500 @@ -2616,8 +2616,7 @@ int ext4_ext_get_blocks(handle_t *handle */ if (allocated > max_blocks) allocated = max_blocks; - /* mark the buffer unwritten */ - __set_bit(BH_Unwritten, &bh_result->b_state); + set_buffer_unwritten(bh); goto out2; } @@ -2723,7 +2722,7 @@ int ext4_ext_get_blocks(handle_t *handle newblock = ext_pblock(&newex); allocated = ext4_ext_get_actual_len(&newex); outnew: - __set_bit(BH_New, &bh_result->b_state); + set_buffer_new(bh_result); /* Cache only when it is _not_ an uninitialized extent */ if (create != EXT4_CREATE_UNINITIALIZED_EXT) @@ -2733,7 +2732,7 @@ out: if (allocated > max_blocks) allocated = max_blocks; ext4_ext_show_leaf(inode, path); - __set_bit(BH_Mapped, &bh_result->b_state); + set_buffer_mapped(bh_result); bh_result->b_bdev = inode->i_sb->s_bdev; bh_result->b_blocknr = newblock; out2: -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html