Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP6
qemu.15022
0139-block-file-posix-do-not-fail-on-unl.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0139-block-file-posix-do-not-fail-on-unl.patch of Package qemu.15022
From e0d7bc001e1665deba9da1abca6e40a9ae914e7a Mon Sep 17 00:00:00 2001 From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Date: Fri, 29 Mar 2019 14:04:54 +0300 Subject: [PATCH] block/file-posix: do not fail on unlock bytes bdrv_replace_child() calls bdrv_check_perm() with error_abort on loosening permissions. However file-locking operations may fail even in this case, for example on NFS. And this leads to Qemu crash. Let's avoid such errors. Note, that we ignore such things anyway on permission update commit and abort. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> (cherry picked from commit 696aaaed579ac5bf5fa336216909b46d3d8f07a8) [LY: BSC#1119115] Signed-off-by: Liang Yan <lyan@suse.com> --- block/file-posix.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/block/file-posix.c b/block/file-posix.c index 2bcf1e4344..982d09aeb2 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -770,6 +770,18 @@ static int raw_handle_perm_lock(BlockDriverState *bs, switch (op) { case RAW_PL_PREPARE: + if ((s->perm | new_perm) == s->perm && + (s->shared_perm & new_shared) == s->shared_perm) + { + /* + * We are going to unlock bytes, it should not fail. If it fail due + * to some fs-dependent permission-unrelated reasons (which occurs + * sometimes on NFS and leads to abort in bdrv_replace_child) we + * can't prevent such errors by any check here. And we ignore them + * anyway in ABORT and COMMIT. + */ + return 0; + } ret = raw_apply_lock_bytes(s, s->lock_fd, s->perm | new_perm, ~s->shared_perm | ~new_shared, false, errp);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor