I think this is a scenario where we have to be careful about layering in
the design. The core migration protocol is a mechanism. The goal is to
not implement policy. Having an exchange of ack/go messages may
increase reliability but they don't do so in a perfect way. How many
times you go back and forth therefore becomes a policy which is based on
how important reliability is to you trading off latency. If you have a
high latency network, the round trip cost of an ack/go message may
introduce unwanted latency (which translates to VM downtime). Moreover,
if you have a third party orchestrating everything, it's totally
unnecessary downtime.
This is not to say there is no place for QEMU to support policies. They
should be layered in such a way that they don't burden everyone though.
The idea behind using migration protocols is to help facilitate this.
I think the tcp: protocol should remain a pure migration-over-tcp
transport. I think there is room for implementing another migration
protocol that was maybe geared toward more average users. An ack/go
message may be appropriate for this. I really think it should also have
a daemon associated with it that could automatically spawn QEMU
instances. I've always felt the ssh: protocol should provide this but
it proved less popular than I expected it to be.
Anyway, my point is that if you want an ack/go message, you should
encapsulate the existing protocol within another protocol (that has it's
own versioning) and introduce a new transport.
What's the use case for this? In what circumstances would you have no
idea of what was happening on DST such that you'd need to get this from
the SRC? The problem with the old migration code is that while there
were a lot of error status, in practice, there was only one or two that
would ever happen.
Regards,
Anthony Liguori
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html