diff options
Diffstat (limited to 'migration/block-active.c')
-rw-r--r-- | migration/block-active.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/migration/block-active.c b/migration/block-active.c new file mode 100644 index 0000000..40e986a --- /dev/null +++ b/migration/block-active.c @@ -0,0 +1,48 @@ +/* + * Block activation tracking for migration purpose + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * Copyright (C) 2024 Red Hat, Inc. + */ +#include "qemu/osdep.h" +#include "block/block.h" +#include "qapi/error.h" +#include "migration/migration.h" +#include "qemu/error-report.h" +#include "trace.h" + +bool migration_block_activate(Error **errp) +{ + ERRP_GUARD(); + + assert(bql_locked()); + + trace_migration_block_activation("active"); + + bdrv_activate_all(errp); + if (*errp) { + error_report_err(error_copy(*errp)); + return false; + } + + return true; +} + +bool migration_block_inactivate(void) +{ + int ret; + + assert(bql_locked()); + + trace_migration_block_activation("inactive"); + + ret = bdrv_inactivate_all(); + if (ret) { + error_report("%s: bdrv_inactivate_all() failed: %d", + __func__, ret); + return false; + } + + return true; +} |