[libvirt] [PATCH 11/12] migration: refactor: introduce parameter checking function
Jiri Denemark
jdenemar at redhat.com
Mon Oct 12 11:32:24 UTC 2015
On Fri, Oct 02, 2015 at 10:52:51 +0300, Nikolay Shirokovskiy wrote:
> virDomainMigrateUnmanagedParams is not a good candidate for this functionality
> as it is used by migrate family functions too and its have its own checks that
> are superset of extracted and we don't need to check twice.
>
> Actually name of the function is slightly misleading as there is also a check
> for consistensy of flags parameter alone. So it could be refactored further and
> reused by all migrate functions but for now let it be a matter of a different
> patchset.
>
> It is *not* a pure refactoring patch as it introduces offline check for older
> versions. Looks like it must be done that way and no one will be broken too.
>
> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
> ---
> src/libvirt-domain.c | 165 ++++++++++++++++++++-----------------------------
> 1 files changed, 67 insertions(+), 98 deletions(-)
>
> diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
> index 2778a15..35dfa3f 100644
> --- a/src/libvirt-domain.c
> +++ b/src/libvirt-domain.c
> @@ -4139,6 +4139,46 @@ virDomainMigrate3(virDomainPtr domain,
> }
>
>
> +static
> +int virDomainMigrateUnmanagedCheckCompat(virDomainPtr domain,
> + unsigned int flags)
> +{
> + VIR_EXCLUSIVE_FLAGS_RET(VIR_MIGRATE_NON_SHARED_DISK,
> + VIR_MIGRATE_NON_SHARED_INC,
> + -1);
> +
> + if (flags & VIR_MIGRATE_OFFLINE &&
> + !VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
> + VIR_DRV_FEATURE_MIGRATION_OFFLINE)) {
> + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> + _("offline migration is not supported by "
> + "the source host"));
> + return -1;
> + }
> +
> + if (flags & VIR_MIGRATE_PEER2PEER) {
> + if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
> + VIR_DRV_FEATURE_MIGRATION_P2P)) {
> + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> + _("p2p migration is not supported by "
> + "the source host"));
> + return -1;
> + }
> + } else {
> + if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
> + VIR_DRV_FEATURE_MIGRATION_DIRECT)) {
> + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> + _("direct migration is not supported by "
> + "the source host"));
> + return -1;
> + }
> + }
> +
> +
One empty line would be enough :-)
> + return 0;
> +}
Jirka
More information about the libvir-list
mailing list