Lines Matching refs:cb
97 struct compressed_bio *cb) in compression_decompress_bio() argument
100 case BTRFS_COMPRESS_ZLIB: return zlib_decompress_bio(ws, cb); in compression_decompress_bio()
101 case BTRFS_COMPRESS_LZO: return lzo_decompress_bio(ws, cb); in compression_decompress_bio()
102 case BTRFS_COMPRESS_ZSTD: return zstd_decompress_bio(ws, cb); in compression_decompress_bio()
134 static int btrfs_decompress_bio(struct compressed_bio *cb);
155 struct compressed_bio *cb = bio->bi_private; in check_compressed_csum() local
156 u8 *cb_sum = cb->sums; in check_compressed_csum()
163 for (i = 0; i < cb->nr_pages; i++) { in check_compressed_csum()
164 page = cb->compressed_pages[i]; in check_compressed_csum()
172 csum, cb_sum, cb->mirror_num); in check_compressed_csum()
196 struct compressed_bio *cb = bio->bi_private; in end_compressed_bio_read() local
204 cb->errors = 1; in end_compressed_bio_read()
209 if (!refcount_dec_and_test(&cb->pending_bios)) in end_compressed_bio_read()
216 btrfs_io_bio(cb->orig_bio)->mirror_num = mirror; in end_compressed_bio_read()
217 cb->mirror_num = mirror; in end_compressed_bio_read()
223 if (cb->errors == 1) in end_compressed_bio_read()
226 inode = cb->inode; in end_compressed_bio_read()
235 ret = btrfs_decompress_bio(cb); in end_compressed_bio_read()
239 cb->errors = 1; in end_compressed_bio_read()
243 for (index = 0; index < cb->nr_pages; index++) { in end_compressed_bio_read()
244 page = cb->compressed_pages[index]; in end_compressed_bio_read()
250 if (cb->errors) { in end_compressed_bio_read()
251 bio_io_error(cb->orig_bio); in end_compressed_bio_read()
261 bio_for_each_segment_all(bvec, cb->orig_bio, iter_all) in end_compressed_bio_read()
264 bio_endio(cb->orig_bio); in end_compressed_bio_read()
268 kfree(cb->compressed_pages); in end_compressed_bio_read()
269 kfree(cb); in end_compressed_bio_read()
279 const struct compressed_bio *cb) in end_compressed_writeback() argument
281 unsigned long index = cb->start >> PAGE_SHIFT; in end_compressed_writeback()
282 unsigned long end_index = (cb->start + cb->len - 1) >> PAGE_SHIFT; in end_compressed_writeback()
288 if (cb->errors) in end_compressed_writeback()
301 if (cb->errors) in end_compressed_writeback()
322 struct compressed_bio *cb = bio->bi_private; in end_compressed_bio_write() local
328 cb->errors = 1; in end_compressed_bio_write()
333 if (!refcount_dec_and_test(&cb->pending_bios)) in end_compressed_bio_write()
339 inode = cb->inode; in end_compressed_bio_write()
340 cb->compressed_pages[0]->mapping = cb->inode->i_mapping; in end_compressed_bio_write()
341 btrfs_writepage_endio_finish_ordered(cb->compressed_pages[0], in end_compressed_bio_write()
342 cb->start, cb->start + cb->len - 1, in end_compressed_bio_write()
343 !cb->errors); in end_compressed_bio_write()
344 cb->compressed_pages[0]->mapping = NULL; in end_compressed_bio_write()
346 end_compressed_writeback(inode, cb); in end_compressed_bio_write()
354 for (index = 0; index < cb->nr_pages; index++) { in end_compressed_bio_write()
355 page = cb->compressed_pages[index]; in end_compressed_bio_write()
361 kfree(cb->compressed_pages); in end_compressed_bio_write()
362 kfree(cb); in end_compressed_bio_write()
386 struct compressed_bio *cb; in btrfs_submit_compressed_write() local
395 cb = kmalloc(compressed_bio_size(fs_info, compressed_len), GFP_NOFS); in btrfs_submit_compressed_write()
396 if (!cb) in btrfs_submit_compressed_write()
398 refcount_set(&cb->pending_bios, 0); in btrfs_submit_compressed_write()
399 cb->errors = 0; in btrfs_submit_compressed_write()
400 cb->inode = &inode->vfs_inode; in btrfs_submit_compressed_write()
401 cb->start = start; in btrfs_submit_compressed_write()
402 cb->len = len; in btrfs_submit_compressed_write()
403 cb->mirror_num = 0; in btrfs_submit_compressed_write()
404 cb->compressed_pages = compressed_pages; in btrfs_submit_compressed_write()
405 cb->compressed_len = compressed_len; in btrfs_submit_compressed_write()
406 cb->orig_bio = NULL; in btrfs_submit_compressed_write()
407 cb->nr_pages = nr_pages; in btrfs_submit_compressed_write()
411 bio->bi_private = cb; in btrfs_submit_compressed_write()
418 refcount_set(&cb->pending_bios, 1); in btrfs_submit_compressed_write()
422 for (pg_index = 0; pg_index < cb->nr_pages; pg_index++) { in btrfs_submit_compressed_write()
440 refcount_inc(&cb->pending_bios); in btrfs_submit_compressed_write()
458 bio->bi_private = cb; in btrfs_submit_compressed_write()
467 bytes_left, cb->compressed_len, cb->nr_pages); in btrfs_submit_compressed_write()
503 struct compressed_bio *cb) in add_ra_bio_pages() argument
519 last_offset = bio_end_offset(cb->orig_bio); in add_ra_bio_pages()
567 (em->block_start >> 9) != cb->orig_bio->bi_iter.bi_sector) { in add_ra_bio_pages()
590 ret = bio_add_page(cb->orig_bio, page, in add_ra_bio_pages()
624 struct compressed_bio *cb; in btrfs_submit_compressed_read() local
651 cb = kmalloc(compressed_bio_size(fs_info, compressed_len), GFP_NOFS); in btrfs_submit_compressed_read()
652 if (!cb) in btrfs_submit_compressed_read()
655 refcount_set(&cb->pending_bios, 0); in btrfs_submit_compressed_read()
656 cb->errors = 0; in btrfs_submit_compressed_read()
657 cb->inode = inode; in btrfs_submit_compressed_read()
658 cb->mirror_num = mirror_num; in btrfs_submit_compressed_read()
659 sums = cb->sums; in btrfs_submit_compressed_read()
661 cb->start = em->orig_start; in btrfs_submit_compressed_read()
668 cb->len = bio->bi_iter.bi_size; in btrfs_submit_compressed_read()
669 cb->compressed_len = compressed_len; in btrfs_submit_compressed_read()
670 cb->compress_type = extent_compress_type(bio_flags); in btrfs_submit_compressed_read()
671 cb->orig_bio = bio; in btrfs_submit_compressed_read()
674 cb->compressed_pages = kcalloc(nr_pages, sizeof(struct page *), in btrfs_submit_compressed_read()
676 if (!cb->compressed_pages) in btrfs_submit_compressed_read()
680 cb->compressed_pages[pg_index] = alloc_page(GFP_NOFS | in btrfs_submit_compressed_read()
682 if (!cb->compressed_pages[pg_index]) { in btrfs_submit_compressed_read()
689 cb->nr_pages = nr_pages; in btrfs_submit_compressed_read()
691 add_ra_bio_pages(inode, em_start + em_len, cb); in btrfs_submit_compressed_read()
694 cb->len = bio->bi_iter.bi_size; in btrfs_submit_compressed_read()
698 comp_bio->bi_private = cb; in btrfs_submit_compressed_read()
700 refcount_set(&cb->pending_bios, 1); in btrfs_submit_compressed_read()
705 page = cb->compressed_pages[pg_index]; in btrfs_submit_compressed_read()
728 refcount_inc(&cb->pending_bios); in btrfs_submit_compressed_read()
748 comp_bio->bi_private = cb; in btrfs_submit_compressed_read()
774 __free_page(cb->compressed_pages[faili]); in btrfs_submit_compressed_read()
778 kfree(cb->compressed_pages); in btrfs_submit_compressed_read()
780 kfree(cb); in btrfs_submit_compressed_read()
1182 static int btrfs_decompress_bio(struct compressed_bio *cb) in btrfs_decompress_bio() argument
1186 int type = cb->compress_type; in btrfs_decompress_bio()
1189 ret = compression_decompress_bio(type, workspace, cb); in btrfs_decompress_bio()