From: Chris Mason Date: Tue, 19 Feb 2008 17:55:05 +0000 (-0500) Subject: Btrfs: Take the extent lock before dropping the delalloc bits X-Git-Tag: firefly_0821_release~15789^2~11^2~55^2~56^2~30^2~280 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d99cb30a11ea117ad0f58cda09aa43438ebbf81c;p=firefly-linux-kernel-4.4.55.git Btrfs: Take the extent lock before dropping the delalloc bits Signed-off-by: Chris Mason --- 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, if (start_pos < inode->i_size) { u64 last_pos; last_pos = (index + num_pages) << PAGE_CACHE_SHIFT; + lock_extent(&BTRFS_I(inode)->io_tree, + start_pos, last_pos - 1, GFP_NOFS); clear_extent_bits(&BTRFS_I(inode)->io_tree, start_pos, last_pos - 1, EXTENT_DIRTY | EXTENT_DELALLOC, GFP_NOFS); + unlock_extent(&BTRFS_I(inode)->io_tree, + start_pos, last_pos - 1, GFP_NOFS); } return 0; }