Lines Matching refs:bs

54 int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info,  in bdrv_snapshot_find()  argument
63 nb_sns = bdrv_snapshot_list(bs, &sn_tab); in bdrv_snapshot_find()
99 bool bdrv_snapshot_find_by_id_and_name(BlockDriverState *bs, in bdrv_snapshot_find_by_id_and_name() argument
112 nb_sns = bdrv_snapshot_list(bs, &sn_tab); in bdrv_snapshot_find_by_id_and_name()
159 bdrv_snapshot_fallback_child(BlockDriverState *bs) in bdrv_snapshot_fallback_child() argument
161 BdrvChild *fallback = bdrv_primary_child(bs); in bdrv_snapshot_fallback_child()
177 QLIST_FOREACH(child, &bs->children, next) { in bdrv_snapshot_fallback_child()
190 bdrv_snapshot_fallback(BlockDriverState *bs) in bdrv_snapshot_fallback() argument
193 return child_bs(bdrv_snapshot_fallback_child(bs)); in bdrv_snapshot_fallback()
196 int bdrv_can_snapshot(BlockDriverState *bs) in bdrv_can_snapshot() argument
198 BlockDriver *drv = bs->drv; in bdrv_can_snapshot()
202 if (!drv || !bdrv_is_inserted(bs) || !bdrv_is_writable(bs)) { in bdrv_can_snapshot()
207 BlockDriverState *fallback_bs = bdrv_snapshot_fallback(bs); in bdrv_can_snapshot()
217 int bdrv_snapshot_create(BlockDriverState *bs, in bdrv_snapshot_create() argument
220 BlockDriver *drv = bs->drv; in bdrv_snapshot_create()
221 BlockDriverState *fallback_bs = bdrv_snapshot_fallback(bs); in bdrv_snapshot_create()
229 return drv->bdrv_snapshot_create(bs, sn_info); in bdrv_snapshot_create()
237 int bdrv_snapshot_goto(BlockDriverState *bs, in bdrv_snapshot_goto() argument
241 BlockDriver *drv = bs->drv; in bdrv_snapshot_goto()
252 if (!QLIST_EMPTY(&bs->dirty_bitmaps)) { in bdrv_snapshot_goto()
258 ret = drv->bdrv_snapshot_goto(bs, snapshot_id); in bdrv_snapshot_goto()
266 fallback = bdrv_snapshot_fallback_child(bs); in bdrv_snapshot_goto()
273 BlockDriverState *fallback_bs = fallback->bs; in bdrv_snapshot_goto()
276 options = qdict_clone_shallow(bs->options); in bdrv_snapshot_goto()
291 drv->bdrv_close(bs); in bdrv_snapshot_goto()
296 bdrv_unref_child(bs, fallback); in bdrv_snapshot_goto()
300 open_ret = drv->bdrv_open(bs, options, bs->open_flags, &local_err); in bdrv_snapshot_goto()
304 bs->drv = NULL; in bdrv_snapshot_goto()
317 assert(bdrv_primary_bs(bs) == fallback_bs); in bdrv_snapshot_goto()
350 int bdrv_snapshot_delete(BlockDriverState *bs, in bdrv_snapshot_delete() argument
355 BlockDriver *drv = bs->drv; in bdrv_snapshot_delete()
356 BlockDriverState *fallback_bs = bdrv_snapshot_fallback(bs); in bdrv_snapshot_delete()
362 error_setg(errp, QERR_DEVICE_HAS_NO_MEDIUM, bdrv_get_device_name(bs)); in bdrv_snapshot_delete()
371 bdrv_drained_begin(bs); in bdrv_snapshot_delete()
374 ret = drv->bdrv_snapshot_delete(bs, snapshot_id, name, errp); in bdrv_snapshot_delete()
380 drv->format_name, bdrv_get_device_name(bs)); in bdrv_snapshot_delete()
384 bdrv_drained_end(bs); in bdrv_snapshot_delete()
388 int bdrv_snapshot_list(BlockDriverState *bs, in bdrv_snapshot_list() argument
394 BlockDriver *drv = bs->drv; in bdrv_snapshot_list()
395 BlockDriverState *fallback_bs = bdrv_snapshot_fallback(bs); in bdrv_snapshot_list()
401 return drv->bdrv_snapshot_list(bs, psn_info); in bdrv_snapshot_list()
429 int bdrv_snapshot_load_tmp(BlockDriverState *bs, in bdrv_snapshot_load_tmp() argument
434 BlockDriver *drv = bs->drv; in bdrv_snapshot_load_tmp()
440 error_setg(errp, QERR_DEVICE_HAS_NO_MEDIUM, bdrv_get_device_name(bs)); in bdrv_snapshot_load_tmp()
447 if (!bdrv_is_read_only(bs)) { in bdrv_snapshot_load_tmp()
452 return drv->bdrv_snapshot_load_tmp(bs, snapshot_id, name, errp); in bdrv_snapshot_load_tmp()
456 drv->format_name, bdrv_get_device_name(bs)); in bdrv_snapshot_load_tmp()
460 int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs, in bdrv_snapshot_load_tmp_by_id_or_name() argument
469 ret = bdrv_snapshot_load_tmp(bs, id_or_name, NULL, &local_err); in bdrv_snapshot_load_tmp_by_id_or_name()
473 ret = bdrv_snapshot_load_tmp(bs, NULL, id_or_name, &local_err); in bdrv_snapshot_load_tmp_by_id_or_name()
495 BlockDriverState *bs = bdrv_find_node(devices->value); in bdrv_all_get_snapshot_devices() local
496 if (!bs) { in bdrv_all_get_snapshot_devices()
500 bdrvs = g_list_append(bdrvs, bs); in bdrv_all_get_snapshot_devices()
504 BlockDriverState *bs; in bdrv_all_get_snapshot_devices() local
506 for (bs = bdrv_first(&it); bs; bs = bdrv_next(&it)) { in bdrv_all_get_snapshot_devices()
507 bdrvs = g_list_append(bdrvs, bs); in bdrv_all_get_snapshot_devices()
516 static bool GRAPH_RDLOCK bdrv_all_snapshots_includes_bs(BlockDriverState *bs) in bdrv_all_snapshots_includes_bs() argument
521 if (!bdrv_is_inserted(bs) || bdrv_is_read_only(bs)) { in bdrv_all_snapshots_includes_bs()
527 return bdrv_has_blk(bs) || QLIST_EMPTY(&bs->parents); in bdrv_all_snapshots_includes_bs()
549 BlockDriverState *bs = iterbdrvs->data; in bdrv_all_can_snapshot() local
550 AioContext *ctx = bdrv_get_aio_context(bs); in bdrv_all_can_snapshot()
554 if (devices || bdrv_all_snapshots_includes_bs(bs)) { in bdrv_all_can_snapshot()
555 ok = bdrv_can_snapshot(bs); in bdrv_all_can_snapshot()
560 "snapshots", bdrv_get_device_or_node_name(bs)); in bdrv_all_can_snapshot()
586 BlockDriverState *bs = iterbdrvs->data; in bdrv_all_delete_snapshot() local
587 AioContext *ctx = bdrv_get_aio_context(bs); in bdrv_all_delete_snapshot()
592 if ((devices || bdrv_all_snapshots_includes_bs(bs)) && in bdrv_all_delete_snapshot()
593 bdrv_snapshot_find(bs, snapshot, name) >= 0) in bdrv_all_delete_snapshot()
595 ret = bdrv_snapshot_delete(bs, snapshot->id_str, in bdrv_all_delete_snapshot()
601 name, bdrv_get_device_or_node_name(bs)); in bdrv_all_delete_snapshot()
632 BlockDriverState *bs = iterbdrvs->data; in bdrv_all_goto_snapshot() local
633 AioContext *ctx = bdrv_get_aio_context(bs); in bdrv_all_goto_snapshot()
638 all_snapshots_includes_bs = bdrv_all_snapshots_includes_bs(bs); in bdrv_all_goto_snapshot()
642 bdrv_snapshot_goto(bs, name, errp) : 0; in bdrv_all_goto_snapshot()
647 name, bdrv_get_device_or_node_name(bs)); in bdrv_all_goto_snapshot()
674 BlockDriverState *bs = iterbdrvs->data; in bdrv_all_has_snapshot() local
675 AioContext *ctx = bdrv_get_aio_context(bs); in bdrv_all_has_snapshot()
680 if (devices || bdrv_all_snapshots_includes_bs(bs)) { in bdrv_all_has_snapshot()
681 ret = bdrv_snapshot_find(bs, &sn, name); in bdrv_all_has_snapshot()
690 name, bdrv_get_device_or_node_name(bs)); in bdrv_all_has_snapshot()
719 BlockDriverState *bs = iterbdrvs->data; in bdrv_all_create_snapshot() local
720 AioContext *ctx = bdrv_get_aio_context(bs); in bdrv_all_create_snapshot()
724 if (bs == vm_state_bs) { in bdrv_all_create_snapshot()
726 ret = bdrv_snapshot_create(bs, sn); in bdrv_all_create_snapshot()
727 } else if (devices || bdrv_all_snapshots_includes_bs(bs)) { in bdrv_all_create_snapshot()
729 ret = bdrv_snapshot_create(bs, sn); in bdrv_all_create_snapshot()
734 sn->name, bdrv_get_device_or_node_name(bs)); in bdrv_all_create_snapshot()
761 BlockDriverState *bs = iterbdrvs->data; in bdrv_all_find_vmstate_bs() local
762 AioContext *ctx = bdrv_get_aio_context(bs); in bdrv_all_find_vmstate_bs()
766 found = (devices || bdrv_all_snapshots_includes_bs(bs)) && in bdrv_all_find_vmstate_bs()
767 bdrv_can_snapshot(bs); in bdrv_all_find_vmstate_bs()
772 bdrv_get_node_name(bs))) { in bdrv_all_find_vmstate_bs()
774 return bs; in bdrv_all_find_vmstate_bs()
783 return bs; in bdrv_all_find_vmstate_bs()