diff options
Diffstat (limited to 'fs/btrfs/compression.c')
-rw-r--r-- | fs/btrfs/compression.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index e2600cdb6c25..6aad98cb343f 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -32,6 +32,7 @@ #include <linux/writeback.h> #include <linux/bit_spinlock.h> #include <linux/slab.h> +#include "compat.h" #include "ctree.h" #include "disk-io.h" #include "transaction.h" @@ -128,10 +129,11 @@ static int check_compressed_csum(struct inode *inode, kunmap_atomic(kaddr); if (csum != *cb_sum) { - btrfs_info(BTRFS_I(inode)->root->fs_info, - "csum failed ino %llu extent %llu csum %u wanted %u mirror %d", - btrfs_ino(inode), disk_start, csum, *cb_sum, - cb->mirror_num); + printk(KERN_INFO "btrfs csum failed ino %llu " + "extent %llu csum %u " + "wanted %u mirror %d\n", + btrfs_ino(inode), disk_start, csum, *cb_sum, + cb->mirror_num); ret = -EIO; goto fail; } @@ -171,8 +173,7 @@ static void end_compressed_bio_read(struct bio *bio, int err) goto out; inode = cb->inode; - ret = check_compressed_csum(inode, cb, - (u64)bio->bi_iter.bi_sector << 9); + ret = check_compressed_csum(inode, cb, (u64)bio->bi_sector << 9); if (ret) goto csum_failed; @@ -201,16 +202,18 @@ csum_failed: if (cb->errors) { bio_io_error(cb->orig_bio); } else { - int i; - struct bio_vec *bvec; + int bio_index = 0; + struct bio_vec *bvec = cb->orig_bio->bi_io_vec; /* * we have verified the checksum already, set page * checked so the end_io handlers know about it */ - bio_for_each_segment_all(bvec, cb->orig_bio, i) + while (bio_index < cb->orig_bio->bi_vcnt) { SetPageChecked(bvec->bv_page); - + bvec++; + bio_index++; + } bio_endio(cb->orig_bio, 0); } @@ -357,7 +360,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, bdev = BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev; bio = compressed_bio_alloc(bdev, first_byte, GFP_NOFS); - if (!bio) { + if(!bio) { kfree(cb); return -ENOMEM; } @@ -370,7 +373,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, for (pg_index = 0; pg_index < cb->nr_pages; pg_index++) { page = compressed_pages[pg_index]; page->mapping = inode->i_mapping; - if (bio->bi_iter.bi_size) + if (bio->bi_size) ret = io_tree->ops->merge_bio_hook(WRITE, page, 0, PAGE_CACHE_SIZE, bio, 0); @@ -410,8 +413,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, bio_add_page(bio, page, PAGE_CACHE_SIZE, 0); } if (bytes_left < PAGE_CACHE_SIZE) { - btrfs_info(BTRFS_I(inode)->root->fs_info, - "bytes left %lu compress len %lu nr %lu", + printk("bytes left %lu compress len %lu nr %lu\n", bytes_left, cb->compressed_len, cb->nr_pages); } bytes_left -= PAGE_CACHE_SIZE; @@ -505,7 +507,7 @@ static noinline int add_ra_bio_pages(struct inode *inode, if (!em || last_offset < em->start || (last_offset + PAGE_CACHE_SIZE > extent_map_end(em)) || - (em->block_start >> 9) != cb->orig_bio->bi_iter.bi_sector) { + (em->block_start >> 9) != cb->orig_bio->bi_sector) { free_extent_map(em); unlock_extent(tree, last_offset, end); unlock_page(page); @@ -551,7 +553,7 @@ next: * in it. We don't actually do IO on those pages but allocate new ones * to hold the compressed pages on disk. * - * bio->bi_iter.bi_sector points to the compressed extent on disk + * bio->bi_sector points to the compressed extent on disk * bio->bi_io_vec points to all of the inode pages * bio->bi_vcnt is a count of pages * @@ -572,7 +574,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, struct page *page; struct block_device *bdev; struct bio *comp_bio; - u64 cur_disk_byte = (u64)bio->bi_iter.bi_sector << 9; + u64 cur_disk_byte = (u64)bio->bi_sector << 9; u64 em_len; u64 em_start; struct extent_map *em; @@ -658,7 +660,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, page->mapping = inode->i_mapping; page->index = em_start >> PAGE_CACHE_SHIFT; - if (comp_bio->bi_iter.bi_size) + if (comp_bio->bi_size) ret = tree->ops->merge_bio_hook(READ, page, 0, PAGE_CACHE_SIZE, comp_bio, 0); @@ -686,8 +688,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, comp_bio, sums); BUG_ON(ret); /* -ENOMEM */ } - sums += (comp_bio->bi_iter.bi_size + - root->sectorsize - 1) / root->sectorsize; + sums += (comp_bio->bi_size + root->sectorsize - 1) / + root->sectorsize; ret = btrfs_map_bio(root, READ, comp_bio, mirror_num, 0); |