From: Daan De Meyer Date: Thu, 10 Apr 2025 19:30:25 +0000 (+0200) Subject: Take shared lock in copy_ephemeral() X-Git-Tag: v26~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8235ddbc5baf83f27f6b6f6ab338ef6dbb524c01;p=thirdparty%2Fmkosi.git Take shared lock in copy_ephemeral() We don't need an exclusive lock to make this copy, so let's take only a shared lock. --- diff --git a/mkosi/qemu.py b/mkosi/qemu.py index f138eca8a..3961bc849 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -615,7 +615,7 @@ def copy_ephemeral(config: Config, src: Path) -> Iterator[Path]: sandbox=config.sandbox, ) - with flock(src): + with flock(src, flags=fcntl.LOCK_SH): fork_and_wait(copy) yield tmp finally: diff --git a/mkosi/util.py b/mkosi/util.py index fe8c8006e..81710924f 100644 --- a/mkosi/util.py +++ b/mkosi/util.py @@ -139,9 +139,9 @@ def flock(path: Path, flags: int = fcntl.LOCK_EX) -> Iterator[int]: @contextlib.contextmanager -def flock_or_die(path: Path) -> Iterator[Path]: +def flock_or_die(path: Path, flags: int = fcntl.LOCK_EX) -> Iterator[Path]: try: - with flock(path, fcntl.LOCK_EX | fcntl.LOCK_NB): + with flock(path, flags | fcntl.LOCK_NB): yield path except OSError as e: if e.errno != errno.EWOULDBLOCK: