This patch revives VDI locking mechanism. When two or more clients (QEMU and tgt) try to open one VDI, sheep returns an error to the later one.
Example: $ sudo qemu-system-x86_64 -hda sheepdog:debian qemu-system-x86_64: -hda sheepdog:debian: could not open disk image sheepdog:debian: cannot get vdi info, VDI isn't locked, debian 0 This mechainsm requires a change in QEMU, too. Counterpart QEMU can be found here: https://github.com/sheepdog/qemu/tree/vdi-locking If consensus about the design can be achieved, I'll post the patches to the QEMU list. Thanks, Hitoshi Hitoshi Mitake (9): sheep: change a prototype of process_main() for obtaining sender information sheep: revive lock operation sheep: add a list for storing information of all clients sheep: associate client info and locked vdi sheep: add an API for releasing VDI sheep: unlock existing lock in a case of double locking dog: use GET_VDI_INFO unconditionally in dog sheep: snapshot and collect vdi state during joining to cluster sheep: log and play locking/unlock information in newly joining node dog/vdi.c | 5 +- include/internal_proto.h | 2 + include/sheepdog_proto.h | 5 + sheep/group.c | 162 ++++++++++++++++++++++- sheep/ops.c | 215 +++++++++++++++++++++++++------ sheep/request.c | 25 ++++- sheep/sheep_priv.h | 26 ++++- sheep/vdi.c | 322 ++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 705 insertions(+), 57 deletions(-) -- sheepdog mailing list sheepdog@lists.wpkg.org http://lists.wpkg.org/mailman/listinfo/sheepdog