Blame SOURCES/kvm-file-posix-Include-filename-in-locking-error-message.patch

b38b0f
From 494baebd78587465d90b9e873cd88c0a83ca52f9 Mon Sep 17 00:00:00 2001
b38b0f
From: Max Reitz <mreitz@redhat.com>
b38b0f
Date: Wed, 3 Apr 2019 17:13:09 +0100
b38b0f
Subject: [PATCH 02/11] file-posix: Include filename in locking error message
b38b0f
b38b0f
RH-Author: Max Reitz <mreitz@redhat.com>
b38b0f
Message-id: <20190403171315.20841-3-mreitz@redhat.com>
b38b0f
Patchwork-id: 85400
b38b0f
O-Subject: [RHEL-8.1 qemu-kvm PATCH 2/8] file-posix: Include filename in locking error message
b38b0f
Bugzilla: 1694148
b38b0f
RH-Acked-by: John Snow <jsnow@redhat.com>
b38b0f
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
b38b0f
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
b38b0f
b38b0f
From: Fam Zheng <famz@redhat.com>
b38b0f
b38b0f
Image locking errors happening at device initialization time doesn't say
b38b0f
which file cannot be locked, for instance,
b38b0f
b38b0f
    -device scsi-disk,drive=drive-1: Failed to get shared "write" lock
b38b0f
    Is another process using the image?
b38b0f
b38b0f
could refer to either the overlay image or its backing image.
b38b0f
b38b0f
Hoist the error_append_hint to the caller of raw_check_lock_bytes where
b38b0f
file name is known, and include it in the error hint.
b38b0f
b38b0f
Signed-off-by: Fam Zheng <famz@redhat.com>
b38b0f
Reviewed-by: Eric Blake <eblake@redhat.com>
b38b0f
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
b38b0f
(cherry picked from commit b857431d2abe3945b672b41f33690e9943a8752a)
b38b0f
Signed-off-by: Max Reitz <mreitz@redhat.com>
b38b0f
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
b38b0f
---
b38b0f
 block/file-posix.c         | 10 +++---
b38b0f
 tests/qemu-iotests/153.out | 76 +++++++++++++++++++++++-----------------------
b38b0f
 tests/qemu-iotests/182.out |  2 +-
b38b0f
 3 files changed, 45 insertions(+), 43 deletions(-)
b38b0f
b38b0f
diff --git a/block/file-posix.c b/block/file-posix.c
b38b0f
index 7e6869d..c2403ba 100644
b38b0f
--- a/block/file-posix.c
b38b0f
+++ b/block/file-posix.c
b38b0f
@@ -738,8 +738,6 @@ static int raw_check_lock_bytes(int fd, uint64_t perm, uint64_t shared_perm,
b38b0f
                            "Failed to get \"%s\" lock",
b38b0f
                            perm_name);
b38b0f
                 g_free(perm_name);
b38b0f
-                error_append_hint(errp,
b38b0f
-                                  "Is another process using the image?\n");
b38b0f
                 return ret;
b38b0f
             }
b38b0f
         }
b38b0f
@@ -755,8 +753,6 @@ static int raw_check_lock_bytes(int fd, uint64_t perm, uint64_t shared_perm,
b38b0f
                            "Failed to get shared \"%s\" lock",
b38b0f
                            perm_name);
b38b0f
                 g_free(perm_name);
b38b0f
-                error_append_hint(errp,
b38b0f
-                                  "Is another process using the image?\n");
b38b0f
                 return ret;
b38b0f
             }
b38b0f
         }
b38b0f
@@ -793,6 +789,9 @@ static int raw_handle_perm_lock(BlockDriverState *bs,
b38b0f
             if (!ret) {
b38b0f
                 return 0;
b38b0f
             }
b38b0f
+            error_append_hint(errp,
b38b0f
+                              "Is another process using the image [%s]?\n",
b38b0f
+                              bs->filename);
b38b0f
         }
b38b0f
         op = RAW_PL_ABORT;
b38b0f
         /* fall through to unlock bytes. */
b38b0f
@@ -2169,6 +2168,9 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
b38b0f
     /* Step two: Check that nobody else has taken conflicting locks */
b38b0f
     result = raw_check_lock_bytes(fd, perm, shared, errp);
b38b0f
     if (result < 0) {
b38b0f
+        error_append_hint(errp,
b38b0f
+                          "Is another process using the image [%s]?\n",
b38b0f
+                          file_opts->filename);
b38b0f
         goto out_unlock;
b38b0f
     }
b38b0f
 
b38b0f
diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
b38b0f
index 93eaf10..8842548 100644
b38b0f
--- a/tests/qemu-iotests/153.out
b38b0f
+++ b/tests/qemu-iotests/153.out
b38b0f
@@ -12,11 +12,11 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t
b38b0f
 
b38b0f
 == Launching another QEMU, opts: '' ==
b38b0f
 QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Launching another QEMU, opts: 'read-only=on' ==
b38b0f
 QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,read-only=on: Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Launching another QEMU, opts: 'read-only=on,force-share=on' ==
b38b0f
 
b38b0f
@@ -24,77 +24,77 @@ Is another process using the image?
b38b0f
 
b38b0f
 _qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_io_wrapper -c open  TEST_DIR/t.qcow2 -c read 0 512
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 no file open, try 'help open'
b38b0f
 
b38b0f
 _qemu_io_wrapper -c open -r  TEST_DIR/t.qcow2 -c read 0 512
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 no file open, try 'help open'
b38b0f
 
b38b0f
 _qemu_img_wrapper info TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper check TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper compare TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper map TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper amend -o  TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper commit TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper convert TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper dd if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
b38b0f
 qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 file format: IMGFMT
b38b0f
 
b38b0f
 == Running utility commands -U ==
b38b0f
@@ -132,7 +132,7 @@ Try 'qemu-img --help' for more information
b38b0f
 
b38b0f
 _qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
b38b0f
 
b38b0f
@@ -157,7 +157,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t
b38b0f
 
b38b0f
 == Launching another QEMU, opts: '' ==
b38b0f
 QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Launching another QEMU, opts: 'read-only=on' ==
b38b0f
 
b38b0f
@@ -167,13 +167,13 @@ Is another process using the image?
b38b0f
 
b38b0f
 _qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
b38b0f
 
b38b0f
 _qemu_io_wrapper -c open  TEST_DIR/t.qcow2 -c read 0 512
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 no file open, try 'help open'
b38b0f
 
b38b0f
 _qemu_io_wrapper -c open -r  TEST_DIR/t.qcow2 -c read 0 512
b38b0f
@@ -188,19 +188,19 @@ _qemu_img_wrapper map TEST_DIR/t.qcow2
b38b0f
 
b38b0f
 _qemu_img_wrapper amend -o  TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper commit TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
b38b0f
 
b38b0f
@@ -212,11 +212,11 @@ _qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
b38b0f
 
b38b0f
 _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
b38b0f
 qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 file format: IMGFMT
b38b0f
 
b38b0f
 == Running utility commands -U ==
b38b0f
@@ -254,7 +254,7 @@ Try 'qemu-img --help' for more information
b38b0f
 
b38b0f
 _qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
b38b0f
 qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 _qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
b38b0f
 
b38b0f
@@ -372,17 +372,17 @@ Round done
b38b0f
 
b38b0f
 == Two devices with the same image (read-only=off - read-only=off) ==
b38b0f
 QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Two devices with the same image (read-only=off - read-only=on) ==
b38b0f
 QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=on: Failed to get shared "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Two devices with the same image (read-only=off - read-only=on,force-share=on) ==
b38b0f
 
b38b0f
 == Two devices with the same image (read-only=on - read-only=off) ==
b38b0f
 QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Two devices with the same image (read-only=on - read-only=on) ==
b38b0f
 
b38b0f
@@ -403,13 +403,13 @@ Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR
b38b0f
 
b38b0f
 == Backing image also as an active device ==
b38b0f
 QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Backing image also as an active device (ro) ==
b38b0f
 
b38b0f
 == Symbolic link ==
b38b0f
 QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 
b38b0f
 == Active commit to intermediate layer should work when base in use ==
b38b0f
 {"return": {}}
b38b0f
@@ -420,7 +420,7 @@ Adding drive
b38b0f
 
b38b0f
 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 Creating overlay with qemu-img when the guest is running should be allowed
b38b0f
 
b38b0f
 _qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.overlay
b38b0f
@@ -433,7 +433,7 @@ _qemu_img_wrapper info TEST_DIR/t.qcow2
b38b0f
 
b38b0f
 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
b38b0f
 can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 Closing the other
b38b0f
 
b38b0f
 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
b38b0f
diff --git a/tests/qemu-iotests/182.out b/tests/qemu-iotests/182.out
b38b0f
index 23a4dbf..f1463c8 100644
b38b0f
--- a/tests/qemu-iotests/182.out
b38b0f
+++ b/tests/qemu-iotests/182.out
b38b0f
@@ -4,5 +4,5 @@ Starting QEMU
b38b0f
 
b38b0f
 Starting a second QEMU using the same image should fail
b38b0f
 QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,id=drive0,file.locking=on: Failed to get "write" lock
b38b0f
-Is another process using the image?
b38b0f
+Is another process using the image [TEST_DIR/t.qcow2]?
b38b0f
 *** done
b38b0f
-- 
b38b0f
1.8.3.1
b38b0f