aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorJosef Bacik <josef@redhat.com>2010-05-23 11:07:21 -0400
committerChris Mason <chris.mason@oracle.com>2010-05-25 10:34:57 -0400
commit11c65dccf70be9ace5dbd3906778e1a099b1fee1 (patch)
tree1289f139ddf652e39672374b6f9051994c21ce57 /fs/btrfs/extent_io.c
parent4b46fce23349bfca781a32e2707a18328ca5ae22 (diff)
Btrfs: do aio_write instead of write
In order for AIO to work, we need to implement aio_write. This patch converts our btrfs_file_write to btrfs_aio_write. I've tested this with xfstests and nothing broke, and the AIO stuff magically started working. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 1a57c17d4029..a53aca338c7f 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2017,6 +2017,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
2017 sector_t sector; 2017 sector_t sector;
2018 struct extent_map *em; 2018 struct extent_map *em;
2019 struct block_device *bdev; 2019 struct block_device *bdev;
2020 struct btrfs_ordered_extent *ordered;
2020 int ret; 2021 int ret;
2021 int nr = 0; 2022 int nr = 0;
2022 size_t page_offset = 0; 2023 size_t page_offset = 0;
@@ -2028,7 +2029,15 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
2028 set_page_extent_mapped(page); 2029 set_page_extent_mapped(page);
2029 2030
2030 end = page_end; 2031 end = page_end;
2031 lock_extent(tree, start, end, GFP_NOFS); 2032 while (1) {
2033 lock_extent(tree, start, end, GFP_NOFS);
2034 ordered = btrfs_lookup_ordered_extent(inode, start);
2035 if (!ordered)
2036 break;
2037 unlock_extent(tree, start, end, GFP_NOFS);
2038 btrfs_start_ordered_extent(inode, ordered, 1);
2039 btrfs_put_ordered_extent(ordered);
2040 }
2032 2041
2033 if (page->index == last_byte >> PAGE_CACHE_SHIFT) { 2042 if (page->index == last_byte >> PAGE_CACHE_SHIFT) {
2034 char *userpage; 2043 char *userpage;