aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/file.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-02-19 12:55:05 -0500
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:00 -0400
commitd99cb30a11ea117ad0f58cda09aa43438ebbf81c (patch)
tree92e6faa3509b1cc4eab21e31ae132d04478d286d /fs/btrfs/file.c
parent5e591a0703bc03047d37938586f97fd8ca960c08 (diff)
Btrfs: Take the extent lock before dropping the delalloc bits
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r--fs/btrfs/file.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 1a47251a9d4d..51466dcd44e0 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -765,9 +765,13 @@ static int prepare_pages(struct btrfs_root *root, struct file *file,
765 if (start_pos < inode->i_size) { 765 if (start_pos < inode->i_size) {
766 u64 last_pos; 766 u64 last_pos;
767 last_pos = (index + num_pages) << PAGE_CACHE_SHIFT; 767 last_pos = (index + num_pages) << PAGE_CACHE_SHIFT;
768 lock_extent(&BTRFS_I(inode)->io_tree,
769 start_pos, last_pos - 1, GFP_NOFS);
768 clear_extent_bits(&BTRFS_I(inode)->io_tree, start_pos, 770 clear_extent_bits(&BTRFS_I(inode)->io_tree, start_pos,
769 last_pos - 1, EXTENT_DIRTY | EXTENT_DELALLOC, 771 last_pos - 1, EXTENT_DIRTY | EXTENT_DELALLOC,
770 GFP_NOFS); 772 GFP_NOFS);
773 unlock_extent(&BTRFS_I(inode)->io_tree,
774 start_pos, last_pos - 1, GFP_NOFS);
771 } 775 }
772 return 0; 776 return 0;
773} 777}