Change btrfs_map_block to return a structure with mappings for all stripes
[deliverable/linux.git] / fs / btrfs / inode.c
index 5140d680184657fe9dfe55dcfaafd15ca8b0ea0b..7ae677d8a6dea67774abd294373e4d9674504825 100644 (file)
@@ -301,9 +301,7 @@ int btrfs_merge_bio_hook(struct page *page, unsigned long offset,
 {
        struct btrfs_root *root = BTRFS_I(page->mapping->host)->root;
        struct btrfs_mapping_tree *map_tree;
-       struct btrfs_device *dev;
        u64 logical = bio->bi_sector << 9;
-       u64 physical;
        u64 length = 0;
        u64 map_length;
        struct bio_vec *bvec;
@@ -315,10 +313,10 @@ int btrfs_merge_bio_hook(struct page *page, unsigned long offset,
        }
        map_tree = &root->fs_info->mapping_tree;
        map_length = length;
-       ret = btrfs_map_block(map_tree, logical, &physical, &map_length, &dev);
+       ret = btrfs_map_block(map_tree, READ, logical,
+                             &map_length, NULL);
+
        if (map_length < length + size) {
-               printk("merge bio hook logical %Lu bio len %Lu physical %Lu "
-                      "len %Lu\n", logical, length, physical, map_length);
                return 1;
        }
        return 0;
@@ -496,6 +494,7 @@ void btrfs_read_locked_inode(struct inode *inode)
        switch (inode->i_mode & S_IFMT) {
        case S_IFREG:
                inode->i_mapping->a_ops = &btrfs_aops;
+               inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
                BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops;
                inode->i_fop = &btrfs_file_operations;
                inode->i_op = &btrfs_file_inode_operations;
@@ -510,6 +509,7 @@ void btrfs_read_locked_inode(struct inode *inode)
        case S_IFLNK:
                inode->i_op = &btrfs_symlink_inode_operations;
                inode->i_mapping->a_ops = &btrfs_symlink_aops;
+               inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
                break;
        default:
                init_special_inode(inode, inode->i_mode, rdev);
@@ -1794,6 +1794,7 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry,
                drop_inode = 1;
        else {
                inode->i_mapping->a_ops = &btrfs_aops;
+               inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
                inode->i_fop = &btrfs_file_operations;
                inode->i_op = &btrfs_file_inode_operations;
                extent_map_tree_init(&BTRFS_I(inode)->extent_tree, GFP_NOFS);
@@ -2962,6 +2963,7 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,
                drop_inode = 1;
        else {
                inode->i_mapping->a_ops = &btrfs_aops;
+               inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
                inode->i_fop = &btrfs_file_operations;
                inode->i_op = &btrfs_file_inode_operations;
                extent_map_tree_init(&BTRFS_I(inode)->extent_tree, GFP_NOFS);
@@ -3001,6 +3003,7 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,
 
        inode->i_op = &btrfs_symlink_inode_operations;
        inode->i_mapping->a_ops = &btrfs_symlink_aops;
+       inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
        inode->i_size = name_len - 1;
        err = btrfs_update_inode(trans, root, inode);
        if (err)
This page took 0.027148 seconds and 5 git commands to generate.