Lines Matching refs:bs

84 cbw_co_preadv(BlockDriverState *bs, int64_t offset, int64_t bytes,  in cbw_co_preadv()  argument
87 return bdrv_co_preadv(bs->file, offset, bytes, qiov, flags); in cbw_co_preadv()
92 BlockDriverState *bs = opaque; in block_copy_cb() local
94 bdrv_dec_in_flight(bs); in block_copy_cb()
106 static coroutine_fn int cbw_do_copy_before_write(BlockDriverState *bs, in cbw_do_copy_before_write() argument
109 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_do_copy_before_write()
132 bdrv_inc_in_flight(bs); in cbw_do_copy_before_write()
134 block_copy_cb, bs); in cbw_do_copy_before_write()
155 cbw_co_pdiscard(BlockDriverState *bs, int64_t offset, int64_t bytes) in cbw_co_pdiscard() argument
157 int ret = cbw_do_copy_before_write(bs, offset, bytes, 0); in cbw_co_pdiscard()
162 return bdrv_co_pdiscard(bs->file, offset, bytes); in cbw_co_pdiscard()
166 cbw_co_pwrite_zeroes(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_co_pwrite_zeroes() argument
169 int ret = cbw_do_copy_before_write(bs, offset, bytes, flags); in cbw_co_pwrite_zeroes()
174 return bdrv_co_pwrite_zeroes(bs->file, offset, bytes, flags); in cbw_co_pwrite_zeroes()
178 int cbw_co_pwritev(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_co_pwritev() argument
181 int ret = cbw_do_copy_before_write(bs, offset, bytes, flags); in cbw_co_pwritev()
186 return bdrv_co_pwritev(bs->file, offset, bytes, qiov, flags); in cbw_co_pwritev()
189 static int coroutine_fn GRAPH_RDLOCK cbw_co_flush(BlockDriverState *bs) in cbw_co_flush() argument
191 if (!bs->file) { in cbw_co_flush()
195 return bdrv_co_flush(bs->file->bs); in cbw_co_flush()
209 cbw_snapshot_read_lock(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_snapshot_read_lock() argument
212 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_snapshot_read_lock()
239 *file = bs->file; in cbw_snapshot_read_lock()
246 cbw_snapshot_read_unlock(BlockDriverState *bs, BlockReq *req) in cbw_snapshot_read_unlock() argument
248 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_snapshot_read_unlock()
262 cbw_co_preadv_snapshot(BlockDriverState *bs, int64_t offset, int64_t bytes, in cbw_co_preadv_snapshot() argument
273 req = cbw_snapshot_read_lock(bs, offset, bytes, &cur_bytes, &file); in cbw_co_preadv_snapshot()
280 cbw_snapshot_read_unlock(bs, req); in cbw_co_preadv_snapshot()
294 cbw_co_snapshot_block_status(BlockDriverState *bs, in cbw_co_snapshot_block_status() argument
299 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_co_snapshot_block_status()
305 req = cbw_snapshot_read_lock(bs, offset, bytes, &cur_bytes, &child); in cbw_co_snapshot_block_status()
310 ret = bdrv_co_block_status(child->bs, offset, cur_bytes, pnum, map, file); in cbw_co_snapshot_block_status()
321 cbw_snapshot_read_unlock(bs, req); in cbw_co_snapshot_block_status()
327 cbw_co_pdiscard_snapshot(BlockDriverState *bs, int64_t offset, int64_t bytes) in cbw_co_pdiscard_snapshot() argument
329 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_co_pdiscard_snapshot()
350 static void GRAPH_RDLOCK cbw_refresh_filename(BlockDriverState *bs) in cbw_refresh_filename() argument
352 pstrcpy(bs->exact_filename, sizeof(bs->exact_filename), in cbw_refresh_filename()
353 bs->file->bs->filename); in cbw_refresh_filename()
357 cbw_child_perm(BlockDriverState *bs, BdrvChild *c, BdrvChildRole role, in cbw_child_perm() argument
362 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_child_perm()
377 bdrv_default_perms(bs, c, role, reopen_queue, in cbw_child_perm()
380 if (!QLIST_EMPTY(&bs->parents)) { in cbw_child_perm()
429 static int cbw_open(BlockDriverState *bs, QDict *options, int flags, in cbw_open() argument
433 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_open()
447 ret = bdrv_open_file_child(NULL, options, "file", bs, errp); in cbw_open()
452 s->target = bdrv_open_child(NULL, options, "target", bs, &child_of_bds, in cbw_open()
472 bs->total_sectors = bs->file->bs->total_sectors; in cbw_open()
473 bs->supported_write_flags = BDRV_REQ_WRITE_UNCHANGED | in cbw_open()
474 (BDRV_REQ_FUA & bs->file->bs->supported_write_flags); in cbw_open()
475 bs->supported_zero_flags = BDRV_REQ_WRITE_UNCHANGED | in cbw_open()
477 bs->file->bs->supported_zero_flags); in cbw_open()
480 s->bcs = block_copy_state_new(bs->file, s->target, bs, bitmap, in cbw_open()
489 s->done_bitmap = bdrv_create_dirty_bitmap(bs, cluster_size, NULL, errp); in cbw_open()
496 s->access_bitmap = bdrv_create_dirty_bitmap(bs, cluster_size, NULL, errp); in cbw_open()
510 static void cbw_close(BlockDriverState *bs) in cbw_close() argument
512 BDRVCopyBeforeWriteState *s = bs->opaque; in cbw_close()
579 void bdrv_cbw_drop(BlockDriverState *bs) in bdrv_cbw_drop() argument
582 bdrv_drop_filter(bs, &error_abort); in bdrv_cbw_drop()
583 bdrv_unref(bs); in bdrv_cbw_drop()