On 16.10.2015 09:32, Peter Krempa wrote: > On Mon, Oct 12, 2015 at 12:25:57 +0200, Michal Privoznik wrote: > > A rather sparse commit message. > >> Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> >> --- >> src/locking/lock_daemon.c | 44 ++++++++++++++++++++++++++ >> src/locking/lock_daemon.h | 8 +++++ >> src/locking/lock_daemon_dispatch.c | 65 ++++++++++++++++++++++++++++++++------ >> 3 files changed, 108 insertions(+), 9 deletions(-) > > [...] > >> diff --git a/src/locking/lock_daemon_dispatch.c b/src/locking/lock_daemon_dispatch.c >> index 2d0bd81..5ad7e11 100644 >> --- a/src/locking/lock_daemon_dispatch.c >> +++ b/src/locking/lock_daemon_dispatch.c > > [...] > >> @@ -433,21 +435,66 @@ virLockSpaceProtocolDispatchCreateLockSpace(virNetServerPtr server ATTRIBUTE_UNU > > [...] > >> static int >> virLockSpaceProtocolDispatchRecallSeclabel(virNetServerPtr server ATTRIBUTE_UNUSED, >> - virNetServerClientPtr client ATTRIBUTE_UNUSED, >> + virNetServerClientPtr client, >> virNetMessagePtr msg ATTRIBUTE_UNUSED, >> - virNetMessageErrorPtr rerr ATTRIBUTE_UNUSED, >> - virLockSpaceProtocolRecallSeclabelArgs *args ATTRIBUTE_UNUSED, >> - virLockSpaceProtocolRecallSeclabelRet *ret ATTRIBUTE_UNUSED) >> + virNetMessageErrorPtr rerr, >> + virLockSpaceProtocolRecallSeclabelArgs *args, >> + virLockSpaceProtocolRecallSeclabelRet *ret) >> { >> - return 0; >> + int rv = -1; >> + int funcRet; >> + virLockDaemonClientPtr priv = >> + virNetServerClientGetPrivateData(client); >> + char *label = NULL; >> + char **label_p = NULL; >> + >> + virMutexLock(&priv->lock); >> + >> + memset(ret, 0, sizeof(*ret)); >> + >> + funcRet = virLockDaemonRecallSeclabel(lockDaemon, >> + args->path, args->model, &label); >> + >> + if (funcRet == 0 && >> + (VIR_ALLOC(label_p) < 0 || >> + VIR_STRDUP(*label_p, label) < 0)) > > This looks rather weird? Why is the extra pointer necessary? It's due to way we handle remote strings. If that was remote NON NULL string, then a single pointer would be enough, but since I want it to be NULL sometimes I must do it this way. If you look at the remote procedures we generate automatically you'll find the same pattern (in fact I've copied the idea from there). Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list