[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 1/2] block: report errno when flock fcntl fails
From: |
David Edmondson |
Subject: |
[PATCH v2 1/2] block: report errno when flock fcntl fails |
Date: |
Mon, 21 Dec 2020 13:49:30 +0000 |
When a call to fcntl(2) for the purpose of manipulating file locks
fails, report the error returned by fcntl.
Signed-off-by: David Edmondson <david.edmondson@oracle.com>
---
block/file-posix.c | 20 +++++-----
tests/qemu-iotests/153.out | 76 +++++++++++++++++++-------------------
tests/qemu-iotests/182.out | 2 +-
3 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/block/file-posix.c b/block/file-posix.c
index 9804681d5c..f866fc9742 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -836,7 +836,7 @@ static int raw_apply_lock_bytes(BDRVRawState *s, int fd,
if ((perm_lock_bits & bit) && !(locked_perm & bit)) {
ret = qemu_lock_fd(fd, off, 1, false);
if (ret) {
- error_setg(errp, "Failed to lock byte %d", off);
+ error_setg_errno(errp, -ret, "Failed to lock byte %d", off);
return ret;
} else if (s) {
s->locked_perm |= bit;
@@ -844,7 +844,7 @@ static int raw_apply_lock_bytes(BDRVRawState *s, int fd,
} else if (unlock && (locked_perm & bit) && !(perm_lock_bits & bit)) {
ret = qemu_unlock_fd(fd, off, 1);
if (ret) {
- error_setg(errp, "Failed to unlock byte %d", off);
+ error_setg_errno(errp, -ret, "Failed to unlock byte %d", off);
return ret;
} else if (s) {
s->locked_perm &= ~bit;
@@ -857,7 +857,7 @@ static int raw_apply_lock_bytes(BDRVRawState *s, int fd,
if ((shared_perm_lock_bits & bit) && !(locked_shared_perm & bit)) {
ret = qemu_lock_fd(fd, off, 1, false);
if (ret) {
- error_setg(errp, "Failed to lock byte %d", off);
+ error_setg_errno(errp, -ret, "Failed to lock byte %d", off);
return ret;
} else if (s) {
s->locked_shared_perm |= bit;
@@ -866,7 +866,7 @@ static int raw_apply_lock_bytes(BDRVRawState *s, int fd,
!(shared_perm_lock_bits & bit)) {
ret = qemu_unlock_fd(fd, off, 1);
if (ret) {
- error_setg(errp, "Failed to unlock byte %d", off);
+ error_setg_errno(errp, -ret, "Failed to unlock byte %d", off);
return ret;
} else if (s) {
s->locked_shared_perm &= ~bit;
@@ -890,9 +890,9 @@ static int raw_check_lock_bytes(int fd, uint64_t perm,
uint64_t shared_perm,
ret = qemu_lock_fd_test(fd, off, 1, true);
if (ret) {
char *perm_name = bdrv_perm_names(p);
- error_setg(errp,
- "Failed to get \"%s\" lock",
- perm_name);
+ error_setg_errno(errp, -ret,
+ "Failed to get \"%s\" lock",
+ perm_name);
g_free(perm_name);
return ret;
}
@@ -905,9 +905,9 @@ static int raw_check_lock_bytes(int fd, uint64_t perm,
uint64_t shared_perm,
ret = qemu_lock_fd_test(fd, off, 1, true);
if (ret) {
char *perm_name = bdrv_perm_names(p);
- error_setg(errp,
- "Failed to get shared \"%s\" lock",
- perm_name);
+ error_setg_errno(errp, -ret,
+ "Failed to get shared \"%s\" lock",
+ perm_name);
g_free(perm_name);
return ret;
}
diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
index fcaa71aeee..c1f8494a63 100644
--- a/tests/qemu-iotests/153.out
+++ b/tests/qemu-iotests/153.out
@@ -11,11 +11,11 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432
backing_file=TEST_DIR/t
== Launching QEMU, opts: '' ==
== Launching another QEMU, opts: '' ==
-QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock
+QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Launching another QEMU, opts: 'read-only=on' ==
-QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,read-only=on: Failed to get
shared "write" lock
+QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,read-only=on: Failed to get
shared "write" lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Launching another QEMU, opts: 'read-only=on,force-share=on' ==
@@ -23,77 +23,77 @@ Is another process using the image [TEST_DIR/t.qcow2]?
== Running utility commands ==
_qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_io_wrapper -c open TEST_DIR/t.qcow2 -c read 0 512
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
no file open, try 'help open'
_qemu_io_wrapper -c open -r TEST_DIR/t.qcow2 -c read 0 512
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
no file open, try 'help open'
_qemu_img_wrapper info TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper check TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper compare TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper map TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper amend -o size=32M TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper commit TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper convert TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper dd if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512
count=1
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write"
lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F
qcow2
-qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock: Resource temporarily
unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
file format: IMGFMT
backing file format: IMGFMT
@@ -132,7 +132,7 @@ qemu-img: unrecognized option '-U'
Try 'qemu-img --help' for more information
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
@@ -158,7 +158,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432
backing_file=TEST_DIR/t
== Launching QEMU, opts: 'read-only=on' ==
== Launching another QEMU, opts: '' ==
-QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock
+QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Launching another QEMU, opts: 'read-only=on' ==
@@ -168,13 +168,13 @@ Is another process using the image [TEST_DIR/t.qcow2]?
== Running utility commands ==
_qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
_qemu_io_wrapper -c open TEST_DIR/t.qcow2 -c read 0 512
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
no file open, try 'help open'
@@ -189,19 +189,19 @@ _qemu_img_wrapper compare TEST_DIR/t.qcow2
TEST_DIR/t.qcow2
_qemu_img_wrapper map TEST_DIR/t.qcow2
_qemu_img_wrapper amend -o size=32M TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper commit TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
@@ -213,11 +213,11 @@ _qemu_img_wrapper dd if=TEST_DIR/t.qcow2
of=TEST_DIR/t.qcow2.convert bs=512 coun
_qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F
qcow2
-qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock: Resource temporarily
unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
file format: IMGFMT
backing file format: IMGFMT
@@ -256,7 +256,7 @@ qemu-img: unrecognized option '-U'
Try 'qemu-img --help' for more information
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
-qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
+qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
@@ -377,17 +377,17 @@ qemu-img: Could not open 'TEST_DIR/t.qcow2':
force-share=on can only be used wit
Round done
== Two devices with the same image (read-only=off - read-only=off) ==
-QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get
"write" lock
+QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get
"write" lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Two devices with the same image (read-only=off - read-only=on) ==
-QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=on: Failed to get
shared "write" lock
+QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=on: Failed to get
shared "write" lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Two devices with the same image (read-only=off -
read-only=on,force-share=on) ==
== Two devices with the same image (read-only=on - read-only=off) ==
-QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get
"write" lock
+QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get
"write" lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Two devices with the same image (read-only=on - read-only=on) ==
@@ -408,13 +408,13 @@ Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT
size=33554432 backing_file=TEST_DIR
== Two devices sharing the same file in backing chain ==
== Backing image also as an active device ==
-QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock
+QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Backing image also as an active device (ro) ==
== Symbolic link ==
-QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock
+QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
== Active commit to intermediate layer should work when base in use ==
@@ -429,7 +429,7 @@ Adding drive
{"return": "OKrn"}
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
Creating overlay with qemu-img when the guest is running should be allowed
@@ -450,7 +450,7 @@ _qemu_img_wrapper info TEST_DIR/t.qcow2
{"return": ""}
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
-qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
+qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock:
Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
Closing the other
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line':
'drive_del d1' } }
diff --git a/tests/qemu-iotests/182.out b/tests/qemu-iotests/182.out
index ce23340670..63b7ecb325 100644
--- a/tests/qemu-iotests/182.out
+++ b/tests/qemu-iotests/182.out
@@ -3,7 +3,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432
Starting QEMU
Starting a second QEMU using the same image should fail
-QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,id=drive0,file.locking=on:
Failed to get "write" lock
+QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,id=drive0,file.locking=on:
Failed to get "write" lock: Resource temporarily unavailable
Is another process using the image [TEST_DIR/t.qcow2]?
=== Testing reopen ===
--
2.29.2