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

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