diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index d6630dc130ba..7ab0e94ad492 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -1577,7 +1577,7 @@ int btrfs_merge_bio_hook(int rw, struct page *page, unsigned long offset, | |||
1577 | unsigned long bio_flags) | 1577 | unsigned long bio_flags) |
1578 | { | 1578 | { |
1579 | struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; | 1579 | struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; |
1580 | u64 logical = (u64)bio->bi_sector << 9; | 1580 | u64 logical = (u64)bio->bi_iter.bi_sector << 9; |
1581 | u64 length = 0; | 1581 | u64 length = 0; |
1582 | u64 map_length; | 1582 | u64 map_length; |
1583 | int ret; | 1583 | int ret; |
@@ -1585,7 +1585,7 @@ int btrfs_merge_bio_hook(int rw, struct page *page, unsigned long offset, | |||
1585 | if (bio_flags & EXTENT_BIO_COMPRESSED) | 1585 | if (bio_flags & EXTENT_BIO_COMPRESSED) |
1586 | return 0; | 1586 | return 0; |
1587 | 1587 | ||
1588 | length = bio->bi_size; | 1588 | length = bio->bi_iter.bi_size; |
1589 | map_length = length; | 1589 | map_length = length; |
1590 | ret = btrfs_map_block(root->fs_info, rw, logical, | 1590 | ret = btrfs_map_block(root->fs_info, rw, logical, |
1591 | &map_length, NULL, 0); | 1591 | &map_length, NULL, 0); |
@@ -6894,7 +6894,8 @@ static void btrfs_end_dio_bio(struct bio *bio, int err) | |||
6894 | printk(KERN_ERR "btrfs direct IO failed ino %llu rw %lu " | 6894 | printk(KERN_ERR "btrfs direct IO failed ino %llu rw %lu " |
6895 | "sector %#Lx len %u err no %d\n", | 6895 | "sector %#Lx len %u err no %d\n", |
6896 | btrfs_ino(dip->inode), bio->bi_rw, | 6896 | btrfs_ino(dip->inode), bio->bi_rw, |
6897 | (unsigned long long)bio->bi_sector, bio->bi_size, err); | 6897 | (unsigned long long)bio->bi_iter.bi_sector, |
6898 | bio->bi_iter.bi_size, err); | ||
6898 | dip->errors = 1; | 6899 | dip->errors = 1; |
6899 | 6900 | ||
6900 | /* | 6901 | /* |
@@ -6985,7 +6986,7 @@ static int btrfs_submit_direct_hook(int rw, struct btrfs_dio_private *dip, | |||
6985 | struct bio *bio; | 6986 | struct bio *bio; |
6986 | struct bio *orig_bio = dip->orig_bio; | 6987 | struct bio *orig_bio = dip->orig_bio; |
6987 | struct bio_vec *bvec = orig_bio->bi_io_vec; | 6988 | struct bio_vec *bvec = orig_bio->bi_io_vec; |
6988 | u64 start_sector = orig_bio->bi_sector; | 6989 | u64 start_sector = orig_bio->bi_iter.bi_sector; |
6989 | u64 file_offset = dip->logical_offset; | 6990 | u64 file_offset = dip->logical_offset; |
6990 | u64 submit_len = 0; | 6991 | u64 submit_len = 0; |
6991 | u64 map_length; | 6992 | u64 map_length; |
@@ -6993,7 +6994,7 @@ static int btrfs_submit_direct_hook(int rw, struct btrfs_dio_private *dip, | |||
6993 | int ret = 0; | 6994 | int ret = 0; |
6994 | int async_submit = 0; | 6995 | int async_submit = 0; |
6995 | 6996 | ||
6996 | map_length = orig_bio->bi_size; | 6997 | map_length = orig_bio->bi_iter.bi_size; |
6997 | ret = btrfs_map_block(root->fs_info, rw, start_sector << 9, | 6998 | ret = btrfs_map_block(root->fs_info, rw, start_sector << 9, |
6998 | &map_length, NULL, 0); | 6999 | &map_length, NULL, 0); |
6999 | if (ret) { | 7000 | if (ret) { |
@@ -7001,7 +7002,7 @@ static int btrfs_submit_direct_hook(int rw, struct btrfs_dio_private *dip, | |||
7001 | return -EIO; | 7002 | return -EIO; |
7002 | } | 7003 | } |
7003 | 7004 | ||
7004 | if (map_length >= orig_bio->bi_size) { | 7005 | if (map_length >= orig_bio->bi_iter.bi_size) { |
7005 | bio = orig_bio; | 7006 | bio = orig_bio; |
7006 | goto submit; | 7007 | goto submit; |
7007 | } | 7008 | } |
@@ -7053,7 +7054,7 @@ static int btrfs_submit_direct_hook(int rw, struct btrfs_dio_private *dip, | |||
7053 | bio->bi_private = dip; | 7054 | bio->bi_private = dip; |
7054 | bio->bi_end_io = btrfs_end_dio_bio; | 7055 | bio->bi_end_io = btrfs_end_dio_bio; |
7055 | 7056 | ||
7056 | map_length = orig_bio->bi_size; | 7057 | map_length = orig_bio->bi_iter.bi_size; |
7057 | ret = btrfs_map_block(root->fs_info, rw, | 7058 | ret = btrfs_map_block(root->fs_info, rw, |
7058 | start_sector << 9, | 7059 | start_sector << 9, |
7059 | &map_length, NULL, 0); | 7060 | &map_length, NULL, 0); |
@@ -7111,7 +7112,8 @@ static void btrfs_submit_direct(int rw, struct bio *dio_bio, | |||
7111 | 7112 | ||
7112 | if (!skip_sum && !write) { | 7113 | if (!skip_sum && !write) { |
7113 | csum_size = btrfs_super_csum_size(root->fs_info->super_copy); | 7114 | csum_size = btrfs_super_csum_size(root->fs_info->super_copy); |
7114 | sum_len = dio_bio->bi_size >> inode->i_sb->s_blocksize_bits; | 7115 | sum_len = dio_bio->bi_iter.bi_size >> |
7116 | inode->i_sb->s_blocksize_bits; | ||
7115 | sum_len *= csum_size; | 7117 | sum_len *= csum_size; |
7116 | } else { | 7118 | } else { |
7117 | sum_len = 0; | 7119 | sum_len = 0; |
@@ -7126,8 +7128,8 @@ static void btrfs_submit_direct(int rw, struct bio *dio_bio, | |||
7126 | dip->private = dio_bio->bi_private; | 7128 | dip->private = dio_bio->bi_private; |
7127 | dip->inode = inode; | 7129 | dip->inode = inode; |
7128 | dip->logical_offset = file_offset; | 7130 | dip->logical_offset = file_offset; |
7129 | dip->bytes = dio_bio->bi_size; | 7131 | dip->bytes = dio_bio->bi_iter.bi_size; |
7130 | dip->disk_bytenr = (u64)dio_bio->bi_sector << 9; | 7132 | dip->disk_bytenr = (u64)dio_bio->bi_iter.bi_sector << 9; |
7131 | io_bio->bi_private = dip; | 7133 | io_bio->bi_private = dip; |
7132 | dip->errors = 0; | 7134 | dip->errors = 0; |
7133 | dip->orig_bio = io_bio; | 7135 | dip->orig_bio = io_bio; |