diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-07-01 17:05:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-01 17:05:40 -0400 |
commit | 1b770c5e246c0be6139b3bdb29d4e2ac30012008 (patch) | |
tree | 5895c25a469e506b78c7d1a7cff60334e9e8699d | |
parent | fd8ecdf0476cf32d7970c8379c6010419b4235d3 (diff) | |
parent | 1d755f62af8bcd2c094324ddd3d591680d41726c (diff) | |
download | ostree-1b770c5e246c0be6139b3bdb29d4e2ac30012008.tar.gz |
Merge pull request #2143 from jlebon/pr/eacces-lock
lib/repo: Handle EACCES for POSIX locking
-rw-r--r-- | src/libostree/ostree-repo-commit.c | 2 | ||||
-rw-r--r-- | src/libostree/ostree-repo.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index 7dd68e96..727e853b 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -1933,7 +1933,7 @@ rename_pending_loose_objects (OstreeRepo *self, return TRUE; } -/* Try to lock a transaction stage directory created by +/* Try to lock and delete a transaction stage directory created by * ostree_repo_prepare_transaction(). */ static gboolean diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 5fd92bb9..82dd286a 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -5980,7 +5980,9 @@ _ostree_repo_try_lock_tmpdir (int tmpdir_dfd, if (!glnx_make_lock_file (tmpdir_dfd, lock_name, LOCK_EX | LOCK_NB, file_lock_out, &local_error)) { - if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) + /* we need to handle EACCES too in the case of POSIX locks; see F_SETLK in fcntl(2) */ + if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK) + || g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED)) { did_lock = FALSE; } |