From 790847d237fc168c4402b1fba79c94d378637884 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 28 Jun 2018 11:31:21 +0200 Subject: [PATCH] libxl: qemu_disk_scsi_drive_string: Break out common parts of disk config The generated configurations are identical apart from, in some cases, reordering of the id=%s element. So, overall, no functional change. This is part of XSA-266. Reported-by: Andrew Reimers Signed-off-by: Jan Beulich Signed-off-by: Ian Jackson master commit: 724e5aa31b58d1e430ad36b484cf0ec021497399 master date: 2018-06-28 09:04:55 +0200 --- tools/libxl/libxl_dm.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 6cbbc3cd9f..660c01ec05 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -771,6 +771,7 @@ static char *qemu_disk_scsi_drive_string(libxl__gc *gc, const char *target_path, int colo_mode) { char *drive = NULL; + char *common = GCSPRINTF("cache=writeback"); const char *exportname = disk->colo_export; const char *active_disk = disk->active_disk; const char *hidden_disk = disk->hidden_disk; @@ -778,8 +779,8 @@ static char *qemu_disk_scsi_drive_string(libxl__gc *gc, const char *target_path, switch (colo_mode) { case LIBXL__COLO_NONE: drive = libxl__sprintf - (gc, "file=%s,if=scsi,bus=0,unit=%d,format=%s,cache=writeback", - target_path, unit, format); + (gc, "%s,file=%s,if=scsi,bus=0,unit=%d,format=%s", + common, target_path, unit, format); break; case LIBXL__COLO_PRIMARY: /* @@ -792,13 +793,13 @@ static char *qemu_disk_scsi_drive_string(libxl__gc *gc, const char *target_path, * vote-threshold=1 */ drive = GCSPRINTF( - "if=scsi,bus=0,unit=%d,cache=writeback,driver=quorum," + "%s,if=scsi,bus=0,unit=%d,,driver=quorum," "id=%s," "children.0.file.filename=%s," "children.0.driver=%s," "read-pattern=fifo," "vote-threshold=1", - unit, exportname, target_path, format); + common, unit, exportname, target_path, format); break; case LIBXL__COLO_SECONDARY: /* @@ -812,14 +813,14 @@ static char *qemu_disk_scsi_drive_string(libxl__gc *gc, const char *target_path, * file.backing.backing=exportname, */ drive = GCSPRINTF( - "if=scsi,bus=0,unit=%d,cache=writeback,driver=replication," + "%s,if=scsi,bus=0,unit=%d,driver=replication," "mode=secondary," "file.driver=qcow2," "file.file.filename=%s," "file.backing.driver=qcow2," "file.backing.file.filename=%s," "file.backing.backing=%s", - unit, active_disk, hidden_disk, exportname); + common, unit, active_disk, hidden_disk, exportname); break; default: abort(); -- 2.39.5