xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* Xen 4.4, xenstored and WATCH requests
@ 2016-02-25 12:54 Sergei Lebedev
  2016-02-26 11:26 ` Wei Liu
  0 siblings, 1 reply; 5+ messages in thread
From: Sergei Lebedev @ 2016-02-25 12:54 UTC (permalink / raw)
  To: xen-devel

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.

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

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-02-26 12:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-25 12:54 Xen 4.4, xenstored and WATCH requests Sergei Lebedev
2016-02-26 11:26 ` Wei Liu
2016-02-26 12:07   ` Wei Liu
2016-02-26 12:10   ` Sergei Lebedev
2016-02-26 12:42     ` Wei Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).