aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/volumes.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-04-22 13:26:46 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:02 -0400
commite1c4b7451e22f5b0a9fbccfa560ee7b80c35b8cd (patch)
tree4e9d3f9d0a8084ad6282965fa190200de3a91d7d /fs/btrfs/volumes.c
parent409c6118d39cb2d8666bee3d61a1a9ae5bbd4f5d (diff)
Fix btrfs_get_extent and get_block corner cases, and disable O_DIRECT reads
The generic O_DIRECT code assumes all the bios have the same bdev, which isn't true for multi-device btrfs. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/volumes.c')
-rw-r--r--fs/btrfs/volumes.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 5619e50583e3..bccb5566fd84 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1161,7 +1161,6 @@ int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio,
1161 int total_devs = 1; 1161 int total_devs = 1;
1162 1162
1163 length = bio->bi_size; 1163 length = bio->bi_size;
1164
1165 map_tree = &root->fs_info->mapping_tree; 1164 map_tree = &root->fs_info->mapping_tree;
1166 map_length = length; 1165 map_length = length;
1167 1166
@@ -1192,6 +1191,7 @@ int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio,
1192 } 1191 }
1193 bio->bi_sector = multi->stripes[dev_nr].physical >> 9; 1192 bio->bi_sector = multi->stripes[dev_nr].physical >> 9;
1194 dev = multi->stripes[dev_nr].dev; 1193 dev = multi->stripes[dev_nr].dev;
1194
1195 bio->bi_bdev = dev->bdev; 1195 bio->bi_bdev = dev->bdev;
1196 spin_lock(&dev->io_lock); 1196 spin_lock(&dev->io_lock);
1197 dev->total_ios++; 1197 dev->total_ios++;