Loading fs/btrfs/compression.c +7 −4 Original line number Original line Diff line number Diff line Loading @@ -388,7 +388,8 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, * freed before we're done setting it up * freed before we're done setting it up */ */ atomic_inc(&cb->pending_bios); atomic_inc(&cb->pending_bios); ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ if (!skip_sum) { if (!skip_sum) { Loading Loading @@ -419,7 +420,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, } } bio_get(bio); bio_get(bio); ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ if (!skip_sum) { if (!skip_sum) { Loading Loading @@ -668,7 +669,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, PAGE_CACHE_SIZE) { PAGE_CACHE_SIZE) { bio_get(comp_bio); bio_get(comp_bio); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ /* /* Loading Loading @@ -706,7 +708,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, } } bio_get(comp_bio); bio_get(comp_bio); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM)) { if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM)) { Loading fs/btrfs/disk-io.c +3 −11 Original line number Original line Diff line number Diff line Loading @@ -82,7 +82,7 @@ struct end_io_wq { void *private; void *private; struct btrfs_fs_info *info; struct btrfs_fs_info *info; int error; int error; int metadata; enum btrfs_wq_endio_type metadata; struct list_head list; struct list_head list; struct btrfs_work work; struct btrfs_work work; }; }; Loading Loading @@ -733,16 +733,8 @@ static void end_workqueue_bio(struct bio *bio, int err) btrfs_queue_work(wq, &end_io_wq->work); btrfs_queue_work(wq, &end_io_wq->work); } } /* * For the metadata arg you want * * 0 - if data * 1 - if normal metadta * 2 - if writing to the free space cache area * 3 - raid parity work */ int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int metadata) enum btrfs_wq_endio_type metadata) { { struct end_io_wq *end_io_wq; struct end_io_wq *end_io_wq; Loading Loading @@ -930,7 +922,7 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, * can happen in the async kernel threads * can happen in the async kernel threads */ */ ret = btrfs_bio_wq_end_io(BTRFS_I(inode)->root->fs_info, ret = btrfs_bio_wq_end_io(BTRFS_I(inode)->root->fs_info, bio, 1); bio, BTRFS_WQ_ENDIO_METADATA); if (ret) if (ret) goto out_w_error; goto out_w_error; ret = btrfs_map_bio(BTRFS_I(inode)->root, rw, bio, ret = btrfs_map_bio(BTRFS_I(inode)->root, rw, bio, Loading fs/btrfs/disk-io.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -25,7 +25,7 @@ #define BTRFS_SUPER_MIRROR_MAX 3 #define BTRFS_SUPER_MIRROR_MAX 3 #define BTRFS_SUPER_MIRROR_SHIFT 12 #define BTRFS_SUPER_MIRROR_SHIFT 12 enum { enum btrfs_wq_endio_type { BTRFS_WQ_ENDIO_DATA = 0, BTRFS_WQ_ENDIO_DATA = 0, BTRFS_WQ_ENDIO_METADATA = 1, BTRFS_WQ_ENDIO_METADATA = 1, BTRFS_WQ_ENDIO_FREE_SPACE = 2, BTRFS_WQ_ENDIO_FREE_SPACE = 2, Loading Loading @@ -120,7 +120,7 @@ int btrfs_read_buffer(struct extent_buffer *buf, u64 parent_transid); u32 btrfs_csum_data(char *data, u32 seed, size_t len); u32 btrfs_csum_data(char *data, u32 seed, size_t len); void btrfs_csum_final(u32 crc, char *result); void btrfs_csum_final(u32 crc, char *result); int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int metadata); enum btrfs_wq_endio_type metadata); int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, int rw, struct bio *bio, int mirror_num, int rw, struct bio *bio, int mirror_num, unsigned long bio_flags, u64 bio_offset, unsigned long bio_flags, u64 bio_offset, Loading fs/btrfs/inode.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -7721,7 +7721,8 @@ static inline int __btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, bio_get(bio); bio_get(bio); if (!write) { if (!write) { ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, bio, BTRFS_WQ_ENDIO_DATA); if (ret) if (ret) goto err; goto err; } } Loading Loading
fs/btrfs/compression.c +7 −4 Original line number Original line Diff line number Diff line Loading @@ -388,7 +388,8 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, * freed before we're done setting it up * freed before we're done setting it up */ */ atomic_inc(&cb->pending_bios); atomic_inc(&cb->pending_bios); ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ if (!skip_sum) { if (!skip_sum) { Loading Loading @@ -419,7 +420,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, } } bio_get(bio); bio_get(bio); ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ if (!skip_sum) { if (!skip_sum) { Loading Loading @@ -668,7 +669,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, PAGE_CACHE_SIZE) { PAGE_CACHE_SIZE) { bio_get(comp_bio); bio_get(comp_bio); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ /* /* Loading Loading @@ -706,7 +708,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, } } bio_get(comp_bio); bio_get(comp_bio); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, comp_bio, BTRFS_WQ_ENDIO_DATA); BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */ if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM)) { if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM)) { Loading
fs/btrfs/disk-io.c +3 −11 Original line number Original line Diff line number Diff line Loading @@ -82,7 +82,7 @@ struct end_io_wq { void *private; void *private; struct btrfs_fs_info *info; struct btrfs_fs_info *info; int error; int error; int metadata; enum btrfs_wq_endio_type metadata; struct list_head list; struct list_head list; struct btrfs_work work; struct btrfs_work work; }; }; Loading Loading @@ -733,16 +733,8 @@ static void end_workqueue_bio(struct bio *bio, int err) btrfs_queue_work(wq, &end_io_wq->work); btrfs_queue_work(wq, &end_io_wq->work); } } /* * For the metadata arg you want * * 0 - if data * 1 - if normal metadta * 2 - if writing to the free space cache area * 3 - raid parity work */ int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int metadata) enum btrfs_wq_endio_type metadata) { { struct end_io_wq *end_io_wq; struct end_io_wq *end_io_wq; Loading Loading @@ -930,7 +922,7 @@ static int btree_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, * can happen in the async kernel threads * can happen in the async kernel threads */ */ ret = btrfs_bio_wq_end_io(BTRFS_I(inode)->root->fs_info, ret = btrfs_bio_wq_end_io(BTRFS_I(inode)->root->fs_info, bio, 1); bio, BTRFS_WQ_ENDIO_METADATA); if (ret) if (ret) goto out_w_error; goto out_w_error; ret = btrfs_map_bio(BTRFS_I(inode)->root, rw, bio, ret = btrfs_map_bio(BTRFS_I(inode)->root, rw, bio, Loading
fs/btrfs/disk-io.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -25,7 +25,7 @@ #define BTRFS_SUPER_MIRROR_MAX 3 #define BTRFS_SUPER_MIRROR_MAX 3 #define BTRFS_SUPER_MIRROR_SHIFT 12 #define BTRFS_SUPER_MIRROR_SHIFT 12 enum { enum btrfs_wq_endio_type { BTRFS_WQ_ENDIO_DATA = 0, BTRFS_WQ_ENDIO_DATA = 0, BTRFS_WQ_ENDIO_METADATA = 1, BTRFS_WQ_ENDIO_METADATA = 1, BTRFS_WQ_ENDIO_FREE_SPACE = 2, BTRFS_WQ_ENDIO_FREE_SPACE = 2, Loading Loading @@ -120,7 +120,7 @@ int btrfs_read_buffer(struct extent_buffer *buf, u64 parent_transid); u32 btrfs_csum_data(char *data, u32 seed, size_t len); u32 btrfs_csum_data(char *data, u32 seed, size_t len); void btrfs_csum_final(u32 crc, char *result); void btrfs_csum_final(u32 crc, char *result); int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, int metadata); enum btrfs_wq_endio_type metadata); int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, int rw, struct bio *bio, int mirror_num, int rw, struct bio *bio, int mirror_num, unsigned long bio_flags, u64 bio_offset, unsigned long bio_flags, u64 bio_offset, Loading
fs/btrfs/inode.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -7721,7 +7721,8 @@ static inline int __btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, bio_get(bio); bio_get(bio); if (!write) { if (!write) { ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0); ret = btrfs_bio_wq_end_io(root->fs_info, bio, BTRFS_WQ_ENDIO_DATA); if (ret) if (ret) goto err; goto err; } } Loading