Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2022-01-27-v2' into staging
[qemu.git] / include / migration / blocker.h
1 /*
2 * QEMU migration blockers
3 *
4 * Copyright IBM, Corp. 2008
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2. See
10 * the COPYING file in the top-level directory.
11 *
12 */
13
14 #ifndef MIGRATION_BLOCKER_H
15 #define MIGRATION_BLOCKER_H
16
17 /**
18 * @migrate_add_blocker - prevent migration from proceeding
19 *
20 * @reason - an error to be returned whenever migration is attempted
21 *
22 * @errp - [out] The reason (if any) we cannot block migration right now.
23 *
24 * @returns - 0 on success, -EBUSY/-EACCES on failure, with errp set.
25 */
26 int migrate_add_blocker(Error *reason, Error **errp);
27
28 /**
29 * @migrate_add_blocker_internal - prevent migration from proceeding without
30 * only-migrate implications
31 *
32 * @reason - an error to be returned whenever migration is attempted
33 *
34 * @errp - [out] The reason (if any) we cannot block migration right now.
35 *
36 * @returns - 0 on success, -EBUSY on failure, with errp set.
37 *
38 * Some of the migration blockers can be temporary (e.g., for a few seconds),
39 * so it shouldn't need to conflict with "-only-migratable". For those cases,
40 * we can call this function rather than @migrate_add_blocker().
41 */
42 int migrate_add_blocker_internal(Error *reason, Error **errp);
43
44 /**
45 * @migrate_del_blocker - remove a blocking error from migration
46 *
47 * @reason - the error blocking migration
48 */
49 void migrate_del_blocker(Error *reason);
50
51 #endif