
On 15.09.2011 16:16, Eric Blake wrote:
On 09/15/2011 08:04 AM, Michal Privoznik wrote:
If a domain has inactive XML we want to transfer it to destination when migrating with VIR_MIGRATE_PERSIST_DEST. In order to harm the migration protocol as least as possible, a optional cookie was chosen. --- src/qemu/qemu_migration.c | 91 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 82 insertions(+), 9 deletions(-)
I haven't looked at the patch closely, but think you are on the right track. At the high level, though, I'm wondering if our cookie is large enough - what limits does our RPC protocol already provide on the size of domain xml going over the wire? We're basically doubling that size, by sending both a full domain xml and a cookie containing another domain xml. For example, if the current RPC limit is 64k of data on one transaction, and we have a 33k domain xml, then we will fail to migrate unless we also bump RPC limits. But since I don't know the current limits on RPC sizes, I may be worrying about nothing.
From src/rpc/virnetprotocol.x:
/* Maximum total message size (serialised). */ const VIR_NET_MESSAGE_MAX = 262144; /* Size of struct virNetMessageHeader (serialised)*/ const VIR_NET_MESSAGE_HEADER_MAX = 24; /* Size of message payload */ const VIR_NET_MESSAGE_PAYLOAD_MAX = 262120; /* Size of message length field. Not counted in VIR_NET_MESSAGE_MAX */ const VIR_NET_MESSAGE_LEN_MAX = 4; /* Length of long, but not unbounded, strings. * This is an arbitrary limit designed to stop the decoder from trying * to allocate unbounded amounts of memory when fed with a bad message. */ const VIR_NET_MESSAGE_STRING_MAX = 65536; So the max size of string is 65K. BUT, because we don't sent 2 XML in one RPC I don't think we are gonna hit that limit soon. My patch sent domain XML among with cookie which is small, not 2 XMLs at the same time. Right now, at the finish phase - which is the place where I send domain xml - the size of cookie is 222B + sizeof(domain name). Therefore I think there is no need to increase the bound for string. Michal