OCaml XenStore


This is the second version of the OCaml XenStore daemon. It is functionally
equivalent to the C XenStore daemon, however certain message operations are
unimplemented. These are: DEBUG, RESUME, and SET_TARGET, which I suggested
in the new version of the XenStore protocol are unneeded anyway.

Due to some broken tools, a hack was added to support values in non-leaf nodes.
This can be found by the Hack type of Node in the Store. Ideally this would be
fixed so that there is no need for the hack.

The trace and verbose output has been changed slightly to show the domain ID
instead of a hex address. For socket connections, a negative domain ID is used.

Transactions have been improved to use optimistic concurrency control and
copy-on-write (instead of duplicating the entire store). A denial-of-service
attack has been included in the build. When run against the current version
of XenStore it will prevent any transaction from completing, thus effective
locking out XenStore. However, using the improved transaction implementation
in the OCaml XenStore, this attack no longer succeeds.


The development environment was 32-bit Ubuntu 8.10 with the stock OCaml package
version 3.10.2. It has been tested on Ubuntu 8.04 with the latest version of
xen-unstable and OCaml version 3.10.0.



To compile xenstored, the attack, and the libxenstore libraries simply type:

# make

To install, type:

# make install


The OCaml XenStore is a drop-in replacement the original C one and will be
compiled when Xen (or the tools) are built and will be installed on to the
system when Xen is installed.
