Richard W.M. Jones
2018-Jan-17 10:23 UTC
[Libguestfs] [PATCH] launch: direct: Use old-style file= and format= parameters when not disabling locking (RHBZ#1503497).
Ancient qemu 1.5 (in RHEL 7) does not understand the file.file.filename= and file.driver= parameters. Go back to using the old-style file= and format= parameters when we're not trying to set the file.backing.file.locking=off parameter. Fixes commit 9fe592808ccfd9ed184b88ca9c6cad2e1798dee3. Thanks: Yongkui Guo, Václav Kadlčík. --- lib/launch-direct.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/launch-direct.c b/lib/launch-direct.c index aa4139359..47e8f37de 100644 --- a/lib/launch-direct.c +++ b/lib/launch-direct.c @@ -255,17 +255,28 @@ add_drive_standard_params (guestfs_h *g, struct backend_direct_data *data, } else { /* Writable qcow2 overlay on top of read-only drive. */ - append_list_format ("file.file.filename=%s", drv->overlay); - append_list ("file.driver=qcow2"); - append_list ("cache=unsafe"); - if (drv->disk_label) - append_list_format ("serial=%s", drv->disk_label); - - /* Add the file-specific locking option only for files, as qemu - * won't accept options unknown to the block driver in use. - */ - if (data->qemu_mandatory_locking && drv->src.protocol == drive_protocol_file) + if (data->qemu_mandatory_locking && + /* Add the file-specific locking option only for files, as + * qemu won't accept options unknown to the block driver in + * use. + */ + drv->src.protocol == drive_protocol_file) { + append_list_format ("file.file.filename=%s", drv->overlay); + append_list ("file.driver=qcow2"); append_list ("file.backing.file.locking=off"); + } + else { + /* Ancient qemu (esp. qemu 1.5 in RHEL 7) didn't understand the + * file.file.filename= parameter, so use the safer old-style + * form of parameters unless we actually want to specify the + * locking flag above. + */ + append_list_format ("file=%s", drv->overlay); + append_list ("format=qcow2"); + } + append_list ("cache=unsafe"); + if (drv->disk_label) + append_list_format ("serial=%s", drv->disk_label); } append_list_format ("id=hd%zu", i); -- 2.13.2
Pino Toscano
2018-Jan-19 15:51 UTC
Re: [Libguestfs] [PATCH] launch: direct: Use old-style file= and format= parameters when not disabling locking (RHBZ#1503497).
On Wednesday, 17 January 2018 11:23:51 CET Richard W.M. Jones wrote:> Ancient qemu 1.5 (in RHEL 7) does not understand the > file.file.filename= and file.driver= parameters. Go back to using the > old-style file= and format= parameters when we're not trying to set > the file.backing.file.locking=off parameter. > > Fixes commit 9fe592808ccfd9ed184b88ca9c6cad2e1798dee3. > > Thanks: Yongkui Guo, Václav Kadlčík. > ---LGTM. -- Pino Toscano
Apparently Analagous Threads
- [PATCH v2 5/5] launch: direct: Disable qemu locking when opening drives readonly (RHBZ#1417306).
- Re: [PATCH v2 5/5] launch: direct: Disable qemu locking when opening drives readonly (RHBZ#1417306).
- [PATCH] launch: direct: Omit locking option for non-file disks (RHBZ#1516094)
- [PATCH] fish: add option --blocksize for disks
- [PATCH v2 RESEND] direct, fish: add command launch_blocksize