summaryrefslogtreecommitdiff
path: root/src/nspawn
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-07-25 11:17:23 +0200
committerLennart Poettering <lennart@poettering.net>2019-07-29 09:52:02 +0200
commit6992459c1294e9f444105a1d4a3ee37b83de558e (patch)
tree1fbc62850dfda3fa2992afcc00913ff7f6d05623 /src/nspawn
parentcd6e3914f7e30f59e8712fa6c32b72523aa7458b (diff)
downloadsystemd-6992459c1294e9f444105a1d4a3ee37b83de558e.tar.gz
systemd-6992459c1294e9f444105a1d4a3ee37b83de558e.tar.bz2
systemd-6992459c1294e9f444105a1d4a3ee37b83de558e.zip
nspawn: always take exclusive locks of ephemeral OS tree copies
Diffstat (limited to 'src/nspawn')
-rw-r--r--src/nspawn/nspawn.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index de748b9de3..2289a0a97f 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -4774,7 +4774,9 @@ static int run(int argc, char *argv[]) {
goto finish;
}
- r = image_path_lock(np, (arg_read_only ? LOCK_SH : LOCK_EX) | LOCK_NB, &tree_global_lock, &tree_local_lock);
+ /* We take an exclusive lock on this image, since it's our private, ephemeral copy
+ * only owned by us and noone else. */
+ r = image_path_lock(np, LOCK_EX|LOCK_NB, &tree_global_lock, &tree_local_lock);
if (r < 0) {
log_error_errno(r, "Failed to lock %s: %m", np);
goto finish;
@@ -4894,7 +4896,8 @@ static int run(int argc, char *argv[]) {
goto finish;
}
- r = image_path_lock(np, (arg_read_only ? LOCK_SH : LOCK_EX) | LOCK_NB, &tree_global_lock, &tree_local_lock);
+ /* Always take an exclusive lock on our own ephemeral copy. */
+ r = image_path_lock(np, LOCK_EX|LOCK_NB, &tree_global_lock, &tree_local_lock);
if (r < 0) {
r = log_error_errno(r, "Failed to create image lock: %m");
goto finish;