Btrfs: Fix race against disk_i_size updates
authorChris Mason <chris.mason@oracle.com>
Wed, 24 Sep 2008 00:19:49 +0000 (20:19 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:07 +0000 (11:04 -0400)
commit34353029534a08e41cfb8be647d734b9ce9ebff8
tree00aaf0f34c2bf5e4a11541ec5f2fff7bc5473df4
parent31840ae1a6b433ca0e6a8d341756ff478bbf959e
Btrfs: Fix race against disk_i_size updates

The code to update the on disk i_size happens before the
ordered_extent record is removed.  So, it is possible for multiple
ordered_extent completion routines to run at the same time, and to
find each other in the ordered tree.

The end result is they both decide not to update disk_i_size, leaving
it too small.  This temporary fix just puts the updates inside
the extent_mutex.  A real solution would be stronger ordering of
disk_i_size updates against removing the ordered extent from the tree.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/inode.c