Lines Matching refs:bs

83 cbw_co_preadv(BlockDriverState *bs, int64_t offset, int64_t bytes,  in cbw_co_preadv()  argument
86 return bdrv_co_preadv(bs->file, offset, bytes, qiov, flags); in cbw_co_preadv()
91 BlockDriverState *bs = opaque; in block_copy_cb() local
93 bdrv_dec_in_flight(bs); in block_copy_cb()
105 static coroutine_fn int cbw_do_copy_before_write(BlockDriverState *bs, in cbw_do_copy_before_write() argument
108 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_do_copy_before_write()
131 bdrv_inc_in_flight(bs); in cbw_do_copy_before_write()
133 block_copy_cb, bs); in cbw_do_copy_before_write()
154 cbw_co_pdiscard(BlockDriverState *bs, int64_t offset, int64_t bytes) in cbw_co_pdiscard() argument
156 int ret = cbw_do_copy_before_write(bs, offset, bytes, 0); in cbw_co_pdiscard()
161 return bdrv_co_pdiscard(bs->file, offset, bytes); in cbw_co_pdiscard()
165 cbw_co_pwrite_zeroes(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_co_pwrite_zeroes() argument
168 int ret = cbw_do_copy_before_write(bs, offset, bytes, flags); in cbw_co_pwrite_zeroes()
173 return bdrv_co_pwrite_zeroes(bs->file, offset, bytes, flags); in cbw_co_pwrite_zeroes()
177 int cbw_co_pwritev(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_co_pwritev() argument
180 int ret = cbw_do_copy_before_write(bs, offset, bytes, flags); in cbw_co_pwritev()
185 return bdrv_co_pwritev(bs->file, offset, bytes, qiov, flags); in cbw_co_pwritev()
188 static int coroutine_fn GRAPH_RDLOCK cbw_co_flush(BlockDriverState *bs) in cbw_co_flush() argument
190 if (!bs->file) { in cbw_co_flush()
194 return bdrv_co_flush(bs->file->bs); in cbw_co_flush()
208 cbw_snapshot_read_lock(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_snapshot_read_lock() argument
211 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_snapshot_read_lock()
238 *file = bs->file; in cbw_snapshot_read_lock()
245 cbw_snapshot_read_unlock(BlockDriverState *bs, BlockReq *req) in cbw_snapshot_read_unlock() argument
247 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_snapshot_read_unlock()
261 cbw_co_preadv_snapshot(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_co_preadv_snapshot() argument
272 req = cbw_snapshot_read_lock(bs, offset, bytes, &cur_bytes, &file); in cbw_co_preadv_snapshot()
279 cbw_snapshot_read_unlock(bs, req); in cbw_co_preadv_snapshot()
293 cbw_co_snapshot_block_status(BlockDriverState *bs, in cbw_co_snapshot_block_status() argument
298 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_co_snapshot_block_status()
304 req = cbw_snapshot_read_lock(bs, offset, bytes, &cur_bytes, &child); in cbw_co_snapshot_block_status()
309 ret = bdrv_co_block_status(child->bs, offset, cur_bytes, pnum, map, file); in cbw_co_snapshot_block_status()
320 cbw_snapshot_read_unlock(bs, req); in cbw_co_snapshot_block_status()
326 cbw_co_pdiscard_snapshot(BlockDriverState *bs, int64_t offset, int64_t bytes) in cbw_co_pdiscard_snapshot() argument
328 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_co_pdiscard_snapshot()
349 static void GRAPH_RDLOCK cbw_refresh_filename(BlockDriverState *bs) in cbw_refresh_filename() argument
351 pstrcpy(bs->exact_filename, sizeof(bs->exact_filename), in cbw_refresh_filename()
352 bs->file->bs->filename); in cbw_refresh_filename()
356 cbw_child_perm(BlockDriverState *bs, BdrvChild *c, BdrvChildRole role, in cbw_child_perm() argument
361 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_child_perm()
376 bdrv_default_perms(bs, c, role, reopen_queue, in cbw_child_perm()
379 if (!QLIST_EMPTY(&bs->parents)) { in cbw_child_perm()
428 static int cbw_open(BlockDriverState *bs, QDict *options, int flags, in cbw_open() argument
432 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_open()
446 ret = bdrv_open_file_child(NULL, options, "file", bs, errp); in cbw_open()
451 s->target = bdrv_open_child(NULL, options, "target", bs, &child_of_bds, in cbw_open()
471 bs->total_sectors = bs->file->bs->total_sectors; in cbw_open()
472 bs->supported_write_flags = BDRV_REQ_WRITE_UNCHANGED | in cbw_open()
473 (BDRV_REQ_FUA & bs->file->bs->supported_write_flags); in cbw_open()
474 bs->supported_zero_flags = BDRV_REQ_WRITE_UNCHANGED | in cbw_open()
476 bs->file->bs->supported_zero_flags); in cbw_open()
479 s->bcs = block_copy_state_new(bs->file, s->target, bs, bitmap, in cbw_open()
488 s->done_bitmap = bdrv_create_dirty_bitmap(bs, cluster_size, NULL, errp); in cbw_open()
495 s->access_bitmap = bdrv_create_dirty_bitmap(bs, cluster_size, NULL, errp); in cbw_open()
509 static void cbw_close(BlockDriverState *bs) in cbw_close() argument
511 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_close()
578 void bdrv_cbw_drop(BlockDriverState *bs) in bdrv_cbw_drop() argument
581 bdrv_drop_filter(bs, &error_abort); in bdrv_cbw_drop()
582 bdrv_unref(bs); in bdrv_cbw_drop()