Commit 8cd1d54 ("util: Export remoteSerializeTypedParameters
internally via util") consolidates both daemon and remote
driver typed param serialization functions. Though as is
no flags are passed which lets virTypedParamsSerialize to
ignore all strings (to be sent), thus leading to fail
migration on drivers on Prepare phase, as already reported
by the Xen test CI[0] with:
error: internal error: no domain XML passed
Sigh, I wish the reality was "easy to refactor, hard to break" rather
than vice versa... :(
This patch proposes setting VIR_TYPED_PARAM_STRING_OKAY
to avoid leading such failures.
[0]
http://lists.xenproject.org/archives/html/xen-devel/2016-02/msg01012.html
Signed-off-by: Joao Martins <joao.m.martins(a)oracle.com>
---
src/remote/remote_driver.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 58787cd..7cf61cf 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -6886,7 +6886,8 @@ remoteDomainMigrateBegin3Params(virDomainPtr domain,
if (virTypedParamsSerialize(params, nparams,
(virTypedParameterRemotePtr *)
&args.params.params_val,
- &args.params.params_len, 0) < 0) {
+ &args.params.params_len,
+ VIR_TYPED_PARAM_STRING_OKAY) < 0) {
xdr_free((xdrproc_t) xdr_remote_domain_migrate_begin3_params_args,
(char *) &args);
goto cleanup;
@@ -6953,7 +6954,8 @@ remoteDomainMigratePrepare3Params(virConnectPtr dconn,
if (virTypedParamsSerialize(params, nparams,
(virTypedParameterRemotePtr *)
&args.params.params_val,
- &args.params.params_len, 0) < 0) {
+ &args.params.params_len,
+ VIR_TYPED_PARAM_STRING_OKAY) < 0) {
xdr_free((xdrproc_t) xdr_remote_domain_migrate_prepare3_params_args,
(char *) &args);
goto cleanup;
@@ -7040,7 +7042,8 @@ remoteDomainMigratePrepareTunnel3Params(virConnectPtr dconn,
if (virTypedParamsSerialize(params, nparams,
(virTypedParameterRemotePtr *)
&args.params.params_val,
- &args.params.params_len, 0) < 0) {
+ &args.params.params_len,
+ VIR_TYPED_PARAM_STRING_OKAY) < 0) {
xdr_free((xdrproc_t) xdr_remote_domain_migrate_prepare_tunnel3_params_args,
(char *) &args);
goto cleanup;
@@ -7129,7 +7132,8 @@ remoteDomainMigratePerform3Params(virDomainPtr dom,
if (virTypedParamsSerialize(params, nparams,
(virTypedParameterRemotePtr *)
&args.params.params_val,
- &args.params.params_len, 0) < 0) {
+ &args.params.params_len,
+ VIR_TYPED_PARAM_STRING_OKAY) < 0) {
xdr_free((xdrproc_t) xdr_remote_domain_migrate_perform3_params_args,
(char *) &args);
goto cleanup;
@@ -7201,7 +7205,8 @@ remoteDomainMigrateFinish3Params(virConnectPtr dconn,
if (virTypedParamsSerialize(params, nparams,
(virTypedParameterRemotePtr *)
&args.params.params_val,
- &args.params.params_len, 0) < 0) {
+ &args.params.params_len,
+ VIR_TYPED_PARAM_STRING_OKAY) < 0) {
xdr_free((xdrproc_t) xdr_remote_domain_migrate_finish3_params_args,
(char *) &args);
goto cleanup;
@@ -7275,7 +7280,8 @@ remoteDomainMigrateConfirm3Params(virDomainPtr domain,
if (virTypedParamsSerialize(params, nparams,
(virTypedParameterRemotePtr *)
&args.params.params_val,
- &args.params.params_len, 0) < 0) {
+ &args.params.params_len,
+ VIR_TYPED_PARAM_STRING_OKAY) < 0) {
xdr_free((xdrproc_t) xdr_remote_domain_migrate_confirm3_params_args,
(char *) &args);
goto cleanup;
The patch itself is fine, but it only covers migration. The commit you
mentioned in the commit message also broke blkiotune and numatune APIs
which have their client bodies generated by gendispatch.pl. So I
adjusted the gendispatch accordingly, squashed into your patch and
pushed. Hopefully, there won't be any other use cases I missed.
Erik