Lines Matching refs:cb

124 				      struct compressed_bio *cb)  in compression_decompress_bio()  argument
126 switch (cb->compress_type) { in compression_decompress_bio()
127 case BTRFS_COMPRESS_ZLIB: return zlib_decompress_bio(ws, cb); in compression_decompress_bio()
128 case BTRFS_COMPRESS_LZO: return lzo_decompress_bio(ws, cb); in compression_decompress_bio()
129 case BTRFS_COMPRESS_ZSTD: return zstd_decompress_bio(ws, cb); in compression_decompress_bio()
161 static void btrfs_free_compressed_folios(struct compressed_bio *cb) in btrfs_free_compressed_folios() argument
163 for (unsigned int i = 0; i < cb->nr_folios; i++) in btrfs_free_compressed_folios()
164 btrfs_free_compr_folio(cb->compressed_folios[i]); in btrfs_free_compressed_folios()
165 kfree(cb->compressed_folios); in btrfs_free_compressed_folios()
168 static int btrfs_decompress_bio(struct compressed_bio *cb);
266 struct compressed_bio *cb = to_compressed_bio(bbio); in end_bbio_compressed_read() local
270 status = errno_to_blk_status(btrfs_decompress_bio(cb)); in end_bbio_compressed_read()
272 btrfs_free_compressed_folios(cb); in end_bbio_compressed_read()
273 btrfs_bio_end_io(cb->orig_bbio, status); in end_bbio_compressed_read()
281 static noinline void end_compressed_writeback(const struct compressed_bio *cb) in end_compressed_writeback() argument
283 struct inode *inode = &cb->bbio.inode->vfs_inode; in end_compressed_writeback()
285 unsigned long index = cb->start >> PAGE_SHIFT; in end_compressed_writeback()
286 unsigned long end_index = (cb->start + cb->len - 1) >> PAGE_SHIFT; in end_compressed_writeback()
288 const int error = blk_status_to_errno(cb->bbio.bio.bi_status); in end_compressed_writeback()
307 cb->start, cb->len); in end_compressed_writeback()
316 struct compressed_bio *cb = in btrfs_finish_compressed_write_work() local
319 btrfs_finish_ordered_extent(cb->bbio.ordered, NULL, cb->start, cb->len, in btrfs_finish_compressed_write_work()
320 cb->bbio.bio.bi_status == BLK_STS_OK); in btrfs_finish_compressed_write_work()
322 if (cb->writeback) in btrfs_finish_compressed_write_work()
323 end_compressed_writeback(cb); in btrfs_finish_compressed_write_work()
326 btrfs_free_compressed_folios(cb); in btrfs_finish_compressed_write_work()
327 bio_put(&cb->bbio.bio); in btrfs_finish_compressed_write_work()
339 struct compressed_bio *cb = to_compressed_bio(bbio); in end_bbio_compressed_write() local
342 queue_work(fs_info->compressed_write_workers, &cb->write_end_work); in end_bbio_compressed_write()
345 static void btrfs_add_compressed_bio_folios(struct compressed_bio *cb) in btrfs_add_compressed_bio_folios() argument
347 struct bio *bio = &cb->bbio.bio; in btrfs_add_compressed_bio_folios()
350 while (offset < cb->compressed_len) { in btrfs_add_compressed_bio_folios()
352 u32 len = min_t(u32, cb->compressed_len - offset, PAGE_SIZE); in btrfs_add_compressed_bio_folios()
355 ret = bio_add_folio(bio, cb->compressed_folios[offset >> PAGE_SHIFT], in btrfs_add_compressed_bio_folios()
379 struct compressed_bio *cb; in btrfs_submit_compressed_write() local
384 cb = alloc_compressed_bio(inode, ordered->file_offset, in btrfs_submit_compressed_write()
387 cb->start = ordered->file_offset; in btrfs_submit_compressed_write()
388 cb->len = ordered->num_bytes; in btrfs_submit_compressed_write()
389 cb->compressed_folios = compressed_folios; in btrfs_submit_compressed_write()
390 cb->compressed_len = ordered->disk_num_bytes; in btrfs_submit_compressed_write()
391 cb->writeback = writeback; in btrfs_submit_compressed_write()
392 INIT_WORK(&cb->write_end_work, btrfs_finish_compressed_write_work); in btrfs_submit_compressed_write()
393 cb->nr_folios = nr_folios; in btrfs_submit_compressed_write()
394 cb->bbio.bio.bi_iter.bi_sector = ordered->disk_bytenr >> SECTOR_SHIFT; in btrfs_submit_compressed_write()
395 cb->bbio.ordered = ordered; in btrfs_submit_compressed_write()
396 btrfs_add_compressed_bio_folios(cb); in btrfs_submit_compressed_write()
398 btrfs_submit_bbio(&cb->bbio, 0); in btrfs_submit_compressed_write()
414 struct compressed_bio *cb, in add_ra_bio_pages() argument
419 struct bio *orig_bio = &cb->orig_bbio->bio; in add_ra_bio_pages()
420 u64 cur = cb->orig_bbio->file_offset + orig_bio->bi_iter.bi_size; in add_ra_bio_pages()
571 struct compressed_bio *cb; in btrfs_submit_compressed_read() local
594 cb = alloc_compressed_bio(inode, file_offset, REQ_OP_READ, in btrfs_submit_compressed_read()
597 cb->start = em->start - em->offset; in btrfs_submit_compressed_read()
601 cb->len = bbio->bio.bi_iter.bi_size; in btrfs_submit_compressed_read()
602 cb->compressed_len = compressed_len; in btrfs_submit_compressed_read()
603 cb->compress_type = extent_map_compression(em); in btrfs_submit_compressed_read()
604 cb->orig_bbio = bbio; in btrfs_submit_compressed_read()
608 cb->nr_folios = DIV_ROUND_UP(compressed_len, PAGE_SIZE); in btrfs_submit_compressed_read()
609 cb->compressed_folios = kcalloc(cb->nr_folios, sizeof(struct page *), GFP_NOFS); in btrfs_submit_compressed_read()
610 if (!cb->compressed_folios) { in btrfs_submit_compressed_read()
615 ret2 = btrfs_alloc_folio_array(cb->nr_folios, cb->compressed_folios); in btrfs_submit_compressed_read()
621 add_ra_bio_pages(&inode->vfs_inode, em_start + em_len, cb, &memstall, in btrfs_submit_compressed_read()
625 cb->len = bbio->bio.bi_iter.bi_size; in btrfs_submit_compressed_read()
626 cb->bbio.bio.bi_iter.bi_sector = bbio->bio.bi_iter.bi_sector; in btrfs_submit_compressed_read()
627 btrfs_add_compressed_bio_folios(cb); in btrfs_submit_compressed_read()
632 btrfs_submit_bbio(&cb->bbio, 0); in btrfs_submit_compressed_read()
636 kfree(cb->compressed_folios); in btrfs_submit_compressed_read()
638 bio_put(&cb->bbio.bio); in btrfs_submit_compressed_read()
1046 static int btrfs_decompress_bio(struct compressed_bio *cb) in btrfs_decompress_bio() argument
1050 int type = cb->compress_type; in btrfs_decompress_bio()
1053 ret = compression_decompress_bio(workspace, cb); in btrfs_decompress_bio()
1057 zero_fill_bio(&cb->orig_bbio->bio); in btrfs_decompress_bio()
1163 struct compressed_bio *cb, u32 decompressed) in btrfs_decompress_buf2page() argument
1165 struct bio *orig_bio = &cb->orig_bbio->bio; in btrfs_decompress_buf2page()
1183 bvec_offset = page_offset(bvec.bv_page) + bvec.bv_offset - cb->start; in btrfs_decompress_buf2page()