mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
This lock is used to protect all userdata files related to a particular domain, which include but are not limited to domain configuration. A new "domain-userdata-lock" entry is introduced in libxl registry. This lock works among different processes and different threads within the same process. Locking protocol inspired by Ian Jackson's chiark-utils with-lock-ex. A file lock is taken with flock(2). If that succeeds that thread fstat the fd and stat the lock file path. If the device and inode match then the lock has been successfully acquired. This lock remains acquired until the lock file gets deleted or released by flock(2). If device and inode don't match then another thread acquired the lock and deleted the file in the meantime; lock procedure should restart. Portability note: this lock utilises flock(2) so a proper implementation of flock(2) is required -- that is, it should not be implemented with fcntl(2). Signed-off-by: Wei Liu <wei.liu2@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>