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

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