[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 00/12] xenstore: support reading directory with many children
Reading the children list of a xenstore node with the length of that list exceeding 4096 bytes is currently not possible. This can be a problem for a large host with a huge number of domains as Xen tools will no longer by capable to scan some directories of xenstore (e.g. /local/domain). This patch series adds a new xs wire command to read a directory in multiple chunks. libxenstore is modified in a compatible way to show an unmodified result in case xenstored doesn't support the new command. As there have been questions regarding handling of memory allocation failures I've decided to add proper handling of those, requiring some more rework. The patch set has been verified to work by using the following shell script: xenstore-write /test "test" for i in `seq 100 500` do xenstore-write /test/entry_with_very_long_name_$i $i done xenstore-ls xenstore-rm /test Xenstore has been verified to work by starting multiple domain types. Especially HVM with qemu-stubdom has been tested as this configuration seems to be rather sensible to concurrent transactions. Changes in V3: - remove patch 1, as it has been applied already - new patches 7-12 - some minor modifications in patch 5 (was 6) as suggested by Jan Beulich Changes in V2: - complete rework as suggested by Jan Beulich: don't use transactions for consistency, but a per-node generation count - fix a (minor?) problem in transaction code regarding watches (patch 1) Juergen Gross (12): xenstore: modify add_change_node() parameter types xenstore: call add_change_node() directly when writing node xenstore: use common tdb record header in xenstore xenstore: add per-node generation counter xenstore: add support for reading directory with many children xenstore: support XS_DIRECTORY_PART in libxenstore xenstore: use array for xenstore wire command handling xenstore: let command functions return error or success xenstore: make functions static xenstore: add helper functions for wire argument parsing xenstore: add small default data buffer to internal struct xenstore: handle memory allocation failures in xenstored tools/xenstore/include/xenstore_lib.h | 24 +- tools/xenstore/xenstore_client.c | 117 +++++ tools/xenstore/xenstored_core.c | 799 ++++++++++++++++++--------------- tools/xenstore/xenstored_core.h | 23 +- tools/xenstore/xenstored_domain.c | 218 ++++----- tools/xenstore/xenstored_domain.h | 14 +- tools/xenstore/xenstored_transaction.c | 100 +++-- tools/xenstore/xenstored_transaction.h | 8 +- tools/xenstore/xenstored_watch.c | 89 ++-- tools/xenstore/xenstored_watch.h | 6 +- tools/xenstore/xs.c | 80 +++- tools/xenstore/xs_lib.c | 112 ----- tools/xenstore/xs_tdb_dump.c | 11 +- xen/include/public/io/xs_wire.h | 3 + 14 files changed, 872 insertions(+), 732 deletions(-) -- 2.6.6 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |