Btrfs: Fix race in btrfs_mark_extent_written
authorYan Zheng <zheng.yan@oracle.com>
Wed, 12 Nov 2008 19:19:50 +0000 (14:19 -0500)
committerChris Mason <chris.mason@oracle.com>
Wed, 12 Nov 2008 19:19:50 +0000 (14:19 -0500)
commitc36047d729a3fa080dd194b20b684cc9fe73e90c
treeac1ac2a3a5e3b9ecb1caf29fde32c00959006ec3
parent2b82032c34ec40515d3c45c36cd1961f37977de8
Btrfs: Fix race in btrfs_mark_extent_written

When extent needs to be split, btrfs_mark_extent_written truncates the extent
first, then inserts a new extent and increases the reference count.

The race happens if someone else deletes the old extent before the new extent
is inserted. The fix here is increase the reference count in advance. This race
is similar to the race in btrfs_drop_extents that was recently fixed.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
fs/btrfs/file.c