X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fmachine-pool.c;fp=src%2Fshared%2Fmachine-pool.c;h=7b17395d212b2bff7a82bd93b41f6c244739154f;hb=403e5b32301cab098151814acbd08821475c00c3;hp=add19bb5a10f86577ad79320fb70f106757c5fa1;hpb=432cea008720480f6eaae7e75e6ad255e91fe2b4;p=elogind.git diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c index add19bb5a..7b17395d2 100644 --- a/src/shared/machine-pool.c +++ b/src/shared/machine-pool.c @@ -161,6 +161,7 @@ fail: } int setup_machine_directory(sd_bus_error *error) { + _cleanup_release_lock_file_ LockFile lock_file = LOCK_FILE_INIT; struct loop_info64 info = { .lo_flags = LO_FLAGS_AUTOCLEAR, }; @@ -170,6 +171,11 @@ int setup_machine_directory(sd_bus_error *error) { bool tmpdir_made = false, mntdir_made = false, mntdir_mounted = false; int r, nr = -1; + /* Make sure we only set the directory up once at a time */ + r = make_lock_file("/run/systemd/machines.lock", LOCK_EX, &lock_file); + if (r < 0) + return r; + r = check_btrfs(); if (r < 0) return sd_bus_error_set_errnof(error, r, "Failed to determine whether /var/lib/machines is located on btrfs: %m");