Re: [PATCH 2/3] xen: modify xenstore watch event interface

From: Boris Ostrovsky
Date: Fri Jan 06 2017 - 17:39:16 EST


On 01/06/2017 10:05 AM, Juergen Gross wrote:
> Today a Xenstore watch event is delivered via a callback function
> declared as:
>
> void (*callback)(struct xenbus_watch *,
> const char **vec, unsigned int len);
>
> As all watch events only ever come with two parameters (path and token)
> changing the prototype to:
>
> void (*callback)(struct xenbus_watch *,
> const char *path, const char *token);
>
> is the natural thing to do.
>
> Apply this change and adapt all users.
>
> Cc: konrad.wilk@xxxxxxxxxx
> Cc: roger.pau@xxxxxxxxxx
> Cc: wei.liu2@xxxxxxxxxx
> Cc: paul.durrant@xxxxxxxxxx
> Cc: netdev@xxxxxxxxxxxxxxx
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>


>
> @@ -903,24 +902,24 @@ static int process_msg(void)
> body[msg->hdr.len] = '\0';
>
> if (msg->hdr.type == XS_WATCH_EVENT) {
> - msg->u.watch.vec = split(body, msg->hdr.len,
> - &msg->u.watch.vec_size);
> - if (IS_ERR(msg->u.watch.vec)) {
> - err = PTR_ERR(msg->u.watch.vec);
> + if (count_strings(body, msg->hdr.len) != 2) {
> + err = -EINVAL;

xenbus_write_watch() returns -EILSEQ when this type of error is
encountered so perhaps for we should return the same error here.

Either way

Reviewed-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>