summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-07-01 17:05:40 -0400
committerGitHub <noreply@github.com>2020-07-01 17:05:40 -0400
commit1b770c5e246c0be6139b3bdb29d4e2ac30012008 (patch)
tree5895c25a469e506b78c7d1a7cff60334e9e8699d
parentfd8ecdf0476cf32d7970c8379c6010419b4235d3 (diff)
parent1d755f62af8bcd2c094324ddd3d591680d41726c (diff)
downloadostree-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.c2
-rw-r--r--src/libostree/ostree-repo.c4
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;
}