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
52