From: Wei Liu <wei.liu2@citrix.com>
To: Sergei Lebedev <sergei.a.lebedev@gmail.com>
Cc: Wei Liu <wei.liu2@citrix.com>, xen-devel@lists.xen.org
Subject: Re: Xen 4.4, xenstored and WATCH requests
Date: Fri, 26 Feb 2016 11:26:50 +0000 [thread overview]
Message-ID: <20160226112650.GC644@citrix.com> (raw)
In-Reply-To: <AA620530-B479-4EAF-ADAB-A25D871B78F0@gmail.com>
Hello
On Thu, Feb 25, 2016 at 03:54:14PM +0300, Sergei Lebedev wrote:
> Hello list,
>
> I’m working on a Python client library for XenStore [1]. The library
> implements two ways to access XenStore: via Unix socket and via /dev.
> The /dev interface turned out to be a bit problematic, because it
> ignores the req_id field for WATCH requests.
>
So the unix socket interface worked fine for you?
> The spec [2] requires all responses (except WATCH_EVENT) to copy
> req_id from request. So I wonder if it’s possible that the behaviour I
> observe is in fact a bug in xenstored?
>
> Below is a Python script demonstrating the issue:
>
> import os
> import struct
>
> WATCH = 4
> WRITE = 11
>
> def send_packet(fd, op, rq_id, tx_id, payload):
> data = struct.pack(b"IIII", op, rq_id, tx_id, len(payload)) + payload
> os.write(fd, data)
>
>
> def print_reply(fd):
> op, rq_id, tx_id, size = struct.unpack(b"IIII", os.read(fd, 16))
> payload = os.read(fd, size) if size else b""
> print(op, rq_id, tx_id, payload)
>
>
> fd = os.open("/dev/xen/xenbus", os.O_RDWR)
> try:
> send_packet(fd, WRITE, 24, 0, b"/foo\x00bar\x00")
> print_reply(fd) # ACK for WRITE with rq_id = 24.
> send_packet(fd, WATCH, 42, 0, b"/foo\x00token\x00")
> print_reply(fd) # Spurious (?) WATCH_EVENT.
> print_reply(fd) # ACK for WATCH with rq_id = 0.
> finally:
> os.close(fd)
>
> Example output:
>
> (11, 24, 0, 'OK\x00')
> (15, 4294967295, 892960384, '/foo\x00token\x00')
> (4, 0, 0, 'OK\x00')
>
> I’m running Xen 4.4 on Ubuntu 14.04 inside VirtualBox.
>
> $ uname -a
> Linux xen-devel 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
>
FWIW I tried you program in my own testbox running xen-unstable with
Debian's stock 3.16 kernel, the result is the same.
And in xen.git
$ git diff origin/stable-4.4..origin/staging -- docs/misc/xenstore.txt
shows nothing.
So this is not a problem in 4.4 only.
Wei.
> Regards,
> Sergei
>
> [1]: http://github.com/selectel/pyxs
> [2]: http://xenbits.xen.org/docs/4.4-testing/misc/xenstore.txt
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-02-26 11:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 12:54 Xen 4.4, xenstored and WATCH requests Sergei Lebedev
2016-02-26 11:26 ` Wei Liu [this message]
2016-02-26 12:07 ` Wei Liu
2016-02-26 12:10 ` Sergei Lebedev
2016-02-26 12:42 ` Wei Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160226112650.GC644@citrix.com \
--to=wei.liu2@citrix.com \
--cc=sergei.a.lebedev@gmail.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.