Lines Matching refs:cb
105 struct compressed_bio *cb) in compression_decompress_bio() argument
107 switch (cb->compress_type) { in compression_decompress_bio()
108 case BTRFS_COMPRESS_ZLIB: return zlib_decompress_bio(ws, cb); in compression_decompress_bio()
109 case BTRFS_COMPRESS_LZO: return lzo_decompress_bio(ws, cb); in compression_decompress_bio()
110 case BTRFS_COMPRESS_ZSTD: return zstd_decompress_bio(ws, cb); in compression_decompress_bio()
142 static int btrfs_decompress_bio(struct compressed_bio *cb);
146 struct compressed_bio *cb = bbio->private; in end_compressed_bio_read() local
151 cb->status = bbio->bio.bi_status; in end_compressed_bio_read()
153 cb->status = errno_to_blk_status(btrfs_decompress_bio(cb)); in end_compressed_bio_read()
156 for (index = 0; index < cb->nr_pages; index++) { in end_compressed_bio_read()
157 page = cb->compressed_pages[index]; in end_compressed_bio_read()
163 btrfs_bio_end_io(btrfs_bio(cb->orig_bio), cb->status); in end_compressed_bio_read()
166 kfree(cb->compressed_pages); in end_compressed_bio_read()
167 kfree(cb); in end_compressed_bio_read()
176 const struct compressed_bio *cb) in end_compressed_writeback() argument
179 unsigned long index = cb->start >> PAGE_SHIFT; in end_compressed_writeback()
180 unsigned long end_index = (cb->start + cb->len - 1) >> PAGE_SHIFT; in end_compressed_writeback()
182 const int errno = blk_status_to_errno(cb->status); in end_compressed_writeback()
203 cb->start, cb->len); in end_compressed_writeback()
210 static void finish_compressed_bio_write(struct compressed_bio *cb) in finish_compressed_bio_write() argument
212 struct inode *inode = cb->inode; in finish_compressed_bio_write()
220 cb->start, cb->start + cb->len - 1, in finish_compressed_bio_write()
221 cb->status == BLK_STS_OK); in finish_compressed_bio_write()
223 if (cb->writeback) in finish_compressed_bio_write()
224 end_compressed_writeback(inode, cb); in finish_compressed_bio_write()
231 for (index = 0; index < cb->nr_pages; index++) { in finish_compressed_bio_write()
232 struct page *page = cb->compressed_pages[index]; in finish_compressed_bio_write()
239 kfree(cb->compressed_pages); in finish_compressed_bio_write()
240 kfree(cb); in finish_compressed_bio_write()
245 struct compressed_bio *cb = in btrfs_finish_compressed_write_work() local
248 finish_compressed_bio_write(cb); in btrfs_finish_compressed_write_work()
260 struct compressed_bio *cb = bbio->private; in end_compressed_bio_write() local
261 struct btrfs_fs_info *fs_info = btrfs_sb(cb->inode->i_sb); in end_compressed_bio_write()
263 cb->status = bbio->bio.bi_status; in end_compressed_bio_write()
264 queue_work(fs_info->compressed_write_workers, &cb->write_end_work); in end_compressed_bio_write()
289 struct compressed_bio *cb; in btrfs_submit_compressed_write() local
295 cb = kmalloc(sizeof(struct compressed_bio), GFP_NOFS); in btrfs_submit_compressed_write()
296 if (!cb) in btrfs_submit_compressed_write()
298 cb->status = BLK_STS_OK; in btrfs_submit_compressed_write()
299 cb->inode = &inode->vfs_inode; in btrfs_submit_compressed_write()
300 cb->start = start; in btrfs_submit_compressed_write()
301 cb->len = len; in btrfs_submit_compressed_write()
302 cb->compressed_pages = compressed_pages; in btrfs_submit_compressed_write()
303 cb->compressed_len = compressed_len; in btrfs_submit_compressed_write()
304 cb->writeback = writeback; in btrfs_submit_compressed_write()
305 INIT_WORK(&cb->write_end_work, btrfs_finish_compressed_write_work); in btrfs_submit_compressed_write()
306 cb->nr_pages = nr_pages; in btrfs_submit_compressed_write()
315 BTRFS_I(cb->inode), end_compressed_bio_write, cb); in btrfs_submit_compressed_write()
372 struct compressed_bio *cb, in add_ra_bio_pages() argument
377 u64 cur = bio_end_offset(cb->orig_bio); in add_ra_bio_pages()
467 (em->block_start >> 9) != cb->orig_bio->bi_iter.bi_sector) { in add_ra_bio_pages()
487 ret = bio_add_page(cb->orig_bio, page, add_size, offset_in_page(cur)); in add_ra_bio_pages()
523 struct compressed_bio *cb; in btrfs_submit_compressed_read() local
554 cb = kmalloc(sizeof(struct compressed_bio), GFP_NOFS); in btrfs_submit_compressed_read()
555 if (!cb) { in btrfs_submit_compressed_read()
560 cb->status = BLK_STS_OK; in btrfs_submit_compressed_read()
561 cb->inode = inode; in btrfs_submit_compressed_read()
563 cb->start = em->orig_start; in btrfs_submit_compressed_read()
567 cb->len = bio->bi_iter.bi_size; in btrfs_submit_compressed_read()
568 cb->compressed_len = compressed_len; in btrfs_submit_compressed_read()
569 cb->compress_type = em->compress_type; in btrfs_submit_compressed_read()
570 cb->orig_bio = bio; in btrfs_submit_compressed_read()
575 cb->nr_pages = DIV_ROUND_UP(compressed_len, PAGE_SIZE); in btrfs_submit_compressed_read()
576 cb->compressed_pages = kcalloc(cb->nr_pages, sizeof(struct page *), GFP_NOFS); in btrfs_submit_compressed_read()
577 if (!cb->compressed_pages) { in btrfs_submit_compressed_read()
582 ret2 = btrfs_alloc_page_array(cb->nr_pages, cb->compressed_pages); in btrfs_submit_compressed_read()
588 add_ra_bio_pages(inode, em_start + em_len, cb, &memstall, &pflags); in btrfs_submit_compressed_read()
591 cb->len = bio->bi_iter.bi_size; in btrfs_submit_compressed_read()
593 comp_bio = btrfs_bio_alloc(BIO_MAX_VECS, REQ_OP_READ, BTRFS_I(cb->inode), in btrfs_submit_compressed_read()
594 end_compressed_bio_read, cb); in btrfs_submit_compressed_read()
602 struct page *page = cb->compressed_pages[index]; in btrfs_submit_compressed_read()
637 if (cb->compressed_pages) { in btrfs_submit_compressed_read()
638 for (i = 0; i < cb->nr_pages; i++) { in btrfs_submit_compressed_read()
639 if (cb->compressed_pages[i]) in btrfs_submit_compressed_read()
640 __free_page(cb->compressed_pages[i]); in btrfs_submit_compressed_read()
644 kfree(cb->compressed_pages); in btrfs_submit_compressed_read()
645 kfree(cb); in btrfs_submit_compressed_read()
1031 static int btrfs_decompress_bio(struct compressed_bio *cb) in btrfs_decompress_bio() argument
1035 int type = cb->compress_type; in btrfs_decompress_bio()
1038 ret = compression_decompress_bio(workspace, cb); in btrfs_decompress_bio()
1111 struct compressed_bio *cb, u32 decompressed) in btrfs_decompress_buf2page() argument
1113 struct bio *orig_bio = cb->orig_bio; in btrfs_decompress_buf2page()
1131 bvec_offset = page_offset(bvec.bv_page) + bvec.bv_offset - cb->start; in btrfs_decompress_buf2page()