qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL 0/9] Ide patches
@ 2019-10-31 10:58 John Snow
  2019-10-31 10:58 ` [PULL 1/9] IDE: deprecate ide-drive John Snow
                   ` (10 more replies)
  0 siblings, 11 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:58 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Laszlo Ersek, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, Paolo Bonzini,
	Max Reitz, John Snow

The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:

  Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)

are available in the Git repository at:

  https://github.com/jnsnow/qemu.git tags/ide-pull-request

for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:

  hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)

----------------------------------------------------------------
Pull request

----------------------------------------------------------------

John Snow (1):
  IDE: deprecate ide-drive

Sam Eiderman (8):
  block: Refactor macros - fix tabbing
  block: Support providing LCHS from user
  bootdevice: Add interface to gather LCHS
  scsi: Propagate unrealize() callback to scsi-hd
  bootdevice: Gather LCHS from all relevant devices
  bootdevice: Refactor get_boot_devices_list
  bootdevice: FW_CFG interface for LCHS values
  hd-geo-test: Add tests for lchs override

 qemu-deprecated.texi          |   5 +
 include/hw/block/block.h      |  22 +-
 include/hw/scsi/scsi.h        |   1 +
 include/sysemu/sysemu.h       |   4 +
 bootdevice.c                  | 147 +++++++--
 hw/block/virtio-blk.c         |   6 +
 hw/ide/qdev.c                 |  10 +-
 hw/nvram/fw_cfg.c             |  14 +-
 hw/scsi/scsi-bus.c            |  16 +
 hw/scsi/scsi-disk.c           |  12 +
 tests/hd-geo-test.c           | 551 ++++++++++++++++++++++++++++++++++
 tests/Makefile.include        |   2 +-
 tests/qemu-iotests/051.pc.out |   6 +-
 13 files changed, 753 insertions(+), 43 deletions(-)

-- 
2.21.0



^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PULL 1/9] IDE: deprecate ide-drive
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
@ 2019-10-31 10:58 ` John Snow
  2019-10-31 22:02   ` Paolo Bonzini
  2019-10-31 10:58 ` [PULL 2/9] block: Refactor macros - fix tabbing John Snow
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: John Snow @ 2019-10-31 10:58 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, Peter Krempa, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Markus Armbruster, Laszlo Ersek, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, Paolo Bonzini,
	Max Reitz, John Snow

It's an old compatibility shim that just delegates to ide-cd or ide-hd.
I'd like to refactor these some day, and getting rid of the super-object
will make that easier.

Either way, we don't need this.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
Message-id: 20191009224303.10232-2-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
---
 qemu-deprecated.texi          | 5 +++++
 hw/ide/qdev.c                 | 3 +++
 tests/qemu-iotests/051.pc.out | 6 ++++--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index f727bd3932..296bfc93a3 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -254,6 +254,11 @@ quite a bit. It will be removed without replacement unless some users speaks
 up at the @email{qemu-devel@@nongnu.org} mailing list with information about
 their usecases.
 
+@subsection ide-drive (since 4.2)
+
+The 'ide-drive' device is deprecated. Users should use 'ide-hd' or
+'ide-cd' as appropriate to get an IDE hard disk or CD-ROM as needed.
+
 @section System emulator machines
 
 @subsection pc-0.12, pc-0.13, pc-0.14 and pc-0.15 (since 4.0)
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 6fba6b62b8..3666e59721 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -279,6 +279,9 @@ static void ide_drive_realize(IDEDevice *dev, Error **errp)
 {
     DriveInfo *dinfo = NULL;
 
+    warn_report("'ide-drive' is deprecated, "
+                "please use 'ide-hd' or 'ide-cd' instead");
+
     if (dev->conf.blk) {
         dinfo = blk_legacy_dinfo(dev->conf.blk);
     }
diff --git a/tests/qemu-iotests/051.pc.out b/tests/qemu-iotests/051.pc.out
index 000557c7c8..34849dd172 100644
--- a/tests/qemu-iotests/051.pc.out
+++ b/tests/qemu-iotests/051.pc.out
@@ -158,7 +158,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
 
 Testing: -drive if=none,id=disk -device ide-drive,drive=disk
 QEMU X.Y.Z monitor - type 'help' for more information
-(qemu) QEMU_PROG: -device ide-drive,drive=disk: Device needs media, but drive is empty
+(qemu) QEMU_PROG: -device ide-drive,drive=disk: warning: 'ide-drive' is deprecated, please use 'ide-hd' or 'ide-cd' instead
+QEMU_PROG: -device ide-drive,drive=disk: Device needs media, but drive is empty
 
 Testing: -drive if=none,id=disk -device ide-hd,drive=disk
 QEMU X.Y.Z monitor - type 'help' for more information
@@ -228,7 +229,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
 
 Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-drive,drive=disk
 QEMU X.Y.Z monitor - type 'help' for more information
-(qemu) QEMU_PROG: -device ide-drive,drive=disk: Block node is read-only
+(qemu) QEMU_PROG: -device ide-drive,drive=disk: warning: 'ide-drive' is deprecated, please use 'ide-hd' or 'ide-cd' instead
+QEMU_PROG: -device ide-drive,drive=disk: Block node is read-only
 
 Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-hd,drive=disk
 QEMU X.Y.Z monitor - type 'help' for more information
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 2/9] block: Refactor macros - fix tabbing
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
  2019-10-31 10:58 ` [PULL 1/9] IDE: deprecate ide-drive John Snow
@ 2019-10-31 10:58 ` John Snow
  2019-10-31 10:58 ` [PULL 3/9] block: Support providing LCHS from user John Snow
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:58 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Fixing tabbing in block related macros.

Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 include/hw/block/block.h | 16 ++++++++--------
 hw/ide/qdev.c            |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/hw/block/block.h b/include/hw/block/block.h
index 607539057a..fd55a30bca 100644
--- a/include/hw/block/block.h
+++ b/include/hw/block/block.h
@@ -50,21 +50,21 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf)
                           _conf.logical_block_size),                    \
     DEFINE_PROP_BLOCKSIZE("physical_block_size", _state,                \
                           _conf.physical_block_size),                   \
-    DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0),  \
+    DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0),    \
     DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0),    \
-    DEFINE_PROP_UINT32("discard_granularity", _state, \
-                       _conf.discard_granularity, -1), \
-    DEFINE_PROP_ON_OFF_AUTO("write-cache", _state, _conf.wce, \
-                            ON_OFF_AUTO_AUTO), \
+    DEFINE_PROP_UINT32("discard_granularity", _state,                   \
+                       _conf.discard_granularity, -1),                  \
+    DEFINE_PROP_ON_OFF_AUTO("write-cache", _state, _conf.wce,           \
+                            ON_OFF_AUTO_AUTO),                          \
     DEFINE_PROP_BOOL("share-rw", _state, _conf.share_rw, false)
 
 #define DEFINE_BLOCK_PROPERTIES(_state, _conf)                          \
     DEFINE_PROP_DRIVE("drive", _state, _conf.blk),                      \
     DEFINE_BLOCK_PROPERTIES_BASE(_state, _conf)
 
-#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf)      \
-    DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0),  \
-    DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0), \
+#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf)                      \
+    DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0),                  \
+    DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0),                \
     DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0)
 
 #define DEFINE_BLOCK_ERROR_PROPERTIES(_state, _conf)                    \
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 3666e59721..85cca6ec38 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -293,7 +293,7 @@ static void ide_drive_realize(IDEDevice *dev, Error **errp)
     DEFINE_BLOCK_PROPERTIES(IDEDrive, dev.conf),        \
     DEFINE_BLOCK_ERROR_PROPERTIES(IDEDrive, dev.conf),  \
     DEFINE_PROP_STRING("ver",  IDEDrive, dev.version),  \
-    DEFINE_PROP_UINT64("wwn",  IDEDrive, dev.wwn, 0),    \
+    DEFINE_PROP_UINT64("wwn",  IDEDrive, dev.wwn, 0),   \
     DEFINE_PROP_STRING("serial",  IDEDrive, dev.serial),\
     DEFINE_PROP_STRING("model", IDEDrive, dev.model)
 
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 3/9] block: Support providing LCHS from user
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
  2019-10-31 10:58 ` [PULL 1/9] IDE: deprecate ide-drive John Snow
  2019-10-31 10:58 ` [PULL 2/9] block: Refactor macros - fix tabbing John Snow
@ 2019-10-31 10:58 ` John Snow
  2019-10-31 10:58 ` [PULL 4/9] bootdevice: Add interface to gather LCHS John Snow
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:58 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Add logical geometry variables to BlockConf.

A user can now supply "lcyls", "lheads" & "lsecs" for any HD device
that supports CHS ("cyls", "heads", "secs").

These devices include:
    * ide-hd
    * scsi-hd
    * virtio-blk-pci

In future commits we will use the provided LCHS and pass it to the BIOS
through fw_cfg to be supplied using INT13 routines.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 include/hw/block/block.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/include/hw/block/block.h b/include/hw/block/block.h
index fd55a30bca..d7246f3862 100644
--- a/include/hw/block/block.h
+++ b/include/hw/block/block.h
@@ -26,6 +26,7 @@ typedef struct BlockConf {
     uint32_t discard_granularity;
     /* geometry, not all devices use this */
     uint32_t cyls, heads, secs;
+    uint32_t lcyls, lheads, lsecs;
     OnOffAuto wce;
     bool share_rw;
     BlockdevOnError rerror;
@@ -65,7 +66,10 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf)
 #define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf)                      \
     DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0),                  \
     DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0),                \
-    DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0)
+    DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0),                  \
+    DEFINE_PROP_UINT32("lcyls", _state, _conf.lcyls, 0),                \
+    DEFINE_PROP_UINT32("lheads", _state, _conf.lheads, 0),              \
+    DEFINE_PROP_UINT32("lsecs", _state, _conf.lsecs, 0)
 
 #define DEFINE_BLOCK_ERROR_PROPERTIES(_state, _conf)                    \
     DEFINE_PROP_BLOCKDEV_ON_ERROR("rerror", _state, _conf.rerror,       \
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 4/9] bootdevice: Add interface to gather LCHS
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (2 preceding siblings ...)
  2019-10-31 10:58 ` [PULL 3/9] block: Support providing LCHS from user John Snow
@ 2019-10-31 10:58 ` John Snow
  2019-10-31 10:59 ` [PULL 5/9] scsi: Propagate unrealize() callback to scsi-hd John Snow
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:58 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Add an interface to provide direct logical CHS values for boot devices.
We will use this interface in the next commits.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 include/sysemu/sysemu.h |  3 +++
 bootdevice.c            | 55 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+)

diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 44f18eb739..5bc5c79cbc 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -103,6 +103,9 @@ void device_add_bootindex_property(Object *obj, int32_t *bootindex,
                                    DeviceState *dev, Error **errp);
 void restore_boot_order(void *opaque);
 void validate_bootdevices(const char *devices, Error **errp);
+void add_boot_device_lchs(DeviceState *dev, const char *suffix,
+                          uint32_t lcyls, uint32_t lheads, uint32_t lsecs);
+void del_boot_device_lchs(DeviceState *dev, const char *suffix);
 
 /* handler to set the boot_device order for a specific type of MachineClass */
 typedef void QEMUBootSetHandler(void *opaque, const char *boot_order,
diff --git a/bootdevice.c b/bootdevice.c
index 1d225202f9..bc5e1c2de4 100644
--- a/bootdevice.c
+++ b/bootdevice.c
@@ -343,3 +343,58 @@ void device_add_bootindex_property(Object *obj, int32_t *bootindex,
     /* initialize devices' bootindex property to -1 */
     object_property_set_int(obj, -1, name, NULL);
 }
+
+typedef struct FWLCHSEntry FWLCHSEntry;
+
+struct FWLCHSEntry {
+    QTAILQ_ENTRY(FWLCHSEntry) link;
+    DeviceState *dev;
+    char *suffix;
+    uint32_t lcyls;
+    uint32_t lheads;
+    uint32_t lsecs;
+};
+
+static QTAILQ_HEAD(, FWLCHSEntry) fw_lchs =
+    QTAILQ_HEAD_INITIALIZER(fw_lchs);
+
+void add_boot_device_lchs(DeviceState *dev, const char *suffix,
+                          uint32_t lcyls, uint32_t lheads, uint32_t lsecs)
+{
+    FWLCHSEntry *node;
+
+    if (!lcyls && !lheads && !lsecs) {
+        return;
+    }
+
+    assert(dev != NULL || suffix != NULL);
+
+    node = g_malloc0(sizeof(FWLCHSEntry));
+    node->suffix = g_strdup(suffix);
+    node->dev = dev;
+    node->lcyls = lcyls;
+    node->lheads = lheads;
+    node->lsecs = lsecs;
+
+    QTAILQ_INSERT_TAIL(&fw_lchs, node, link);
+}
+
+void del_boot_device_lchs(DeviceState *dev, const char *suffix)
+{
+    FWLCHSEntry *i;
+
+    if (dev == NULL) {
+        return;
+    }
+
+    QTAILQ_FOREACH(i, &fw_lchs, link) {
+        if ((!suffix || !g_strcmp0(i->suffix, suffix)) &&
+             i->dev == dev) {
+            QTAILQ_REMOVE(&fw_lchs, i, link);
+            g_free(i->suffix);
+            g_free(i);
+
+            break;
+        }
+    }
+}
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 5/9] scsi: Propagate unrealize() callback to scsi-hd
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (3 preceding siblings ...)
  2019-10-31 10:58 ` [PULL 4/9] bootdevice: Add interface to gather LCHS John Snow
@ 2019-10-31 10:59 ` John Snow
  2019-10-31 10:59 ` [PULL 6/9] bootdevice: Gather LCHS from all relevant devices John Snow
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:59 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

We will need to add LCHS removal logic to scsi-hd's unrealize() in the
next commit.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 include/hw/scsi/scsi.h |  1 +
 hw/scsi/scsi-bus.c     | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
index d77a92361b..332ef602f4 100644
--- a/include/hw/scsi/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -59,6 +59,7 @@ struct SCSIRequest {
 typedef struct SCSIDeviceClass {
     DeviceClass parent_class;
     void (*realize)(SCSIDevice *dev, Error **errp);
+    void (*unrealize)(SCSIDevice *dev, Error **errp);
     int (*parse_cdb)(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
                      void *hba_private);
     SCSIRequest *(*alloc_req)(SCSIDevice *s, uint32_t tag, uint32_t lun,
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index bccb7cc4c6..359d50d6d0 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -59,6 +59,14 @@ static void scsi_device_realize(SCSIDevice *s, Error **errp)
     }
 }
 
+static void scsi_device_unrealize(SCSIDevice *s, Error **errp)
+{
+    SCSIDeviceClass *sc = SCSI_DEVICE_GET_CLASS(s);
+    if (sc->unrealize) {
+        sc->unrealize(s, errp);
+    }
+}
+
 int scsi_bus_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf,
                        void *hba_private)
 {
@@ -217,12 +225,20 @@ static void scsi_qdev_realize(DeviceState *qdev, Error **errp)
 static void scsi_qdev_unrealize(DeviceState *qdev, Error **errp)
 {
     SCSIDevice *dev = SCSI_DEVICE(qdev);
+    Error *local_err = NULL;
 
     if (dev->vmsentry) {
         qemu_del_vm_change_state_handler(dev->vmsentry);
     }
 
     scsi_device_purge_requests(dev, SENSE_CODE(NO_SENSE));
+
+    scsi_device_unrealize(dev, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return;
+    }
+
     blockdev_mark_auto_del(dev->conf.blk);
 }
 
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 6/9] bootdevice: Gather LCHS from all relevant devices
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (4 preceding siblings ...)
  2019-10-31 10:59 ` [PULL 5/9] scsi: Propagate unrealize() callback to scsi-hd John Snow
@ 2019-10-31 10:59 ` John Snow
  2019-10-31 10:59 ` [PULL 7/9] bootdevice: Refactor get_boot_devices_list John Snow
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:59 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Relevant devices are:
    * ide-hd (and ide-cd, ide-drive)
    * scsi-hd (and scsi-cd, scsi-disk, scsi-block)
    * virtio-blk-pci

We do not call del_boot_device_lchs() for ide-* since we don't need to -
IDE block devices do not support unplugging.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 hw/block/virtio-blk.c |  6 ++++++
 hw/ide/qdev.c         |  5 +++++
 hw/scsi/scsi-disk.c   | 12 ++++++++++++
 3 files changed, 23 insertions(+)

diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 9fa2eaf890..4c357d2928 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -1200,6 +1200,11 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp)
     blk_set_guest_block_size(s->blk, s->conf.conf.logical_block_size);
 
     blk_iostatus_enable(s->blk);
+
+    add_boot_device_lchs(dev, "/disk@0,0",
+                         conf->conf.lcyls,
+                         conf->conf.lheads,
+                         conf->conf.lsecs);
 }
 
 static void virtio_blk_device_unrealize(DeviceState *dev, Error **errp)
@@ -1210,6 +1215,7 @@ static void virtio_blk_device_unrealize(DeviceState *dev, Error **errp)
     unsigned i;
 
     blk_drain(s->blk);
+    del_boot_device_lchs(dev, "/disk@0,0");
     virtio_blk_data_plane_destroy(s->dataplane);
     s->dataplane = NULL;
     for (i = 0; i < conf->num_queues; i++) {
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 85cca6ec38..374a791a45 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -220,6 +220,11 @@ static void ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind, Error **errp)
 
     add_boot_device_path(dev->conf.bootindex, &dev->qdev,
                          dev->unit ? "/disk@1" : "/disk@0");
+
+    add_boot_device_lchs(&dev->qdev, dev->unit ? "/disk@1" : "/disk@0",
+                         dev->conf.lcyls,
+                         dev->conf.lheads,
+                         dev->conf.lsecs);
 }
 
 static void ide_dev_get_bootindex(Object *obj, Visitor *v, const char *name,
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 68b1675fd9..07fb5ebdf1 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -35,6 +35,7 @@
 #include "hw/block/block.h"
 #include "hw/qdev-properties.h"
 #include "sysemu/dma.h"
+#include "sysemu/sysemu.h"
 #include "qemu/cutils.h"
 #include "trace.h"
 
@@ -2414,6 +2415,16 @@ static void scsi_realize(SCSIDevice *dev, Error **errp)
     blk_set_guest_block_size(s->qdev.conf.blk, s->qdev.blocksize);
 
     blk_iostatus_enable(s->qdev.conf.blk);
+
+    add_boot_device_lchs(&dev->qdev, NULL,
+                         dev->conf.lcyls,
+                         dev->conf.lheads,
+                         dev->conf.lsecs);
+}
+
+static void scsi_unrealize(SCSIDevice *dev, Error **errp)
+{
+    del_boot_device_lchs(&dev->qdev, NULL);
 }
 
 static void scsi_hd_realize(SCSIDevice *dev, Error **errp)
@@ -3018,6 +3029,7 @@ static void scsi_hd_class_initfn(ObjectClass *klass, void *data)
     SCSIDeviceClass *sc = SCSI_DEVICE_CLASS(klass);
 
     sc->realize      = scsi_hd_realize;
+    sc->unrealize    = scsi_unrealize;
     sc->alloc_req    = scsi_new_request;
     sc->unit_attention_reported = scsi_disk_unit_attention_reported;
     dc->desc = "virtual SCSI disk";
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 7/9] bootdevice: Refactor get_boot_devices_list
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (5 preceding siblings ...)
  2019-10-31 10:59 ` [PULL 6/9] bootdevice: Gather LCHS from all relevant devices John Snow
@ 2019-10-31 10:59 ` John Snow
  2019-10-31 10:59 ` [PULL 8/9] bootdevice: FW_CFG interface for LCHS values John Snow
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:59 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Move device name construction to a separate function.

We will reuse this function in the following commit to pass logical CHS
parameters through fw_cfg much like we currently pass bootindex.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 bootdevice.c | 61 +++++++++++++++++++++++++++++-----------------------
 1 file changed, 34 insertions(+), 27 deletions(-)

diff --git a/bootdevice.c b/bootdevice.c
index bc5e1c2de4..2cf6b37c57 100644
--- a/bootdevice.c
+++ b/bootdevice.c
@@ -202,6 +202,39 @@ DeviceState *get_boot_device(uint32_t position)
     return res;
 }
 
+static char *get_boot_device_path(DeviceState *dev, bool ignore_suffixes,
+                                  const char *suffix)
+{
+    char *devpath = NULL, *s = NULL, *d, *bootpath;
+
+    if (dev) {
+        devpath = qdev_get_fw_dev_path(dev);
+        assert(devpath);
+    }
+
+    if (!ignore_suffixes) {
+        if (dev) {
+            d = qdev_get_own_fw_dev_path_from_handler(dev->parent_bus, dev);
+            if (d) {
+                assert(!suffix);
+                s = d;
+            } else {
+                s = g_strdup(suffix);
+            }
+        } else {
+            s = g_strdup(suffix);
+        }
+    }
+
+    bootpath = g_strdup_printf("%s%s",
+                               devpath ? devpath : "",
+                               s ? s : "");
+    g_free(devpath);
+    g_free(s);
+
+    return bootpath;
+}
+
 /*
  * This function returns null terminated string that consist of new line
  * separated device paths.
@@ -218,36 +251,10 @@ char *get_boot_devices_list(size_t *size)
     bool ignore_suffixes = mc->ignore_boot_device_suffixes;
 
     QTAILQ_FOREACH(i, &fw_boot_order, link) {
-        char *devpath = NULL,  *suffix = NULL;
         char *bootpath;
-        char *d;
         size_t len;
 
-        if (i->dev) {
-            devpath = qdev_get_fw_dev_path(i->dev);
-            assert(devpath);
-        }
-
-        if (!ignore_suffixes) {
-            if (i->dev) {
-                d = qdev_get_own_fw_dev_path_from_handler(i->dev->parent_bus,
-                                                          i->dev);
-                if (d) {
-                    assert(!i->suffix);
-                    suffix = d;
-                } else {
-                    suffix = g_strdup(i->suffix);
-                }
-            } else {
-                suffix = g_strdup(i->suffix);
-            }
-        }
-
-        bootpath = g_strdup_printf("%s%s",
-                                   devpath ? devpath : "",
-                                   suffix ? suffix : "");
-        g_free(devpath);
-        g_free(suffix);
+        bootpath = get_boot_device_path(i->dev, ignore_suffixes, i->suffix);
 
         if (total) {
             list[total-1] = '\n';
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 8/9] bootdevice: FW_CFG interface for LCHS values
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (6 preceding siblings ...)
  2019-10-31 10:59 ` [PULL 7/9] bootdevice: Refactor get_boot_devices_list John Snow
@ 2019-10-31 10:59 ` John Snow
  2019-10-31 10:59 ` [PULL 9/9] hd-geo-test: Add tests for lchs override John Snow
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:59 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Using fw_cfg, supply logical CHS values directly from QEMU to the BIOS.

Non-standard logical geometries break under QEMU.

A virtual disk which contains an operating system which depends on
logical geometries (consistent values being reported from BIOS INT13
AH=08) will most likely break under QEMU/SeaBIOS if it has non-standard
logical geometries - for example 56 SPT (sectors per track).
No matter what QEMU will report - SeaBIOS, for large enough disks - will
use LBA translation, which will report 63 SPT instead.

In addition we cannot force SeaBIOS to rely on physical geometries at
all. A virtio-blk-pci virtual disk with 255 phyiscal heads cannot
report more than 16 physical heads when moved to an IDE controller,
since the ATA spec allows a maximum of 16 heads - this is an artifact of
virtualization.

By supplying the logical geometries directly we are able to support such
"exotic" disks.

We serialize this information in a similar way to the "bootorder"
interface.
The new fw_cfg entry is "bios-geometry".

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 include/sysemu/sysemu.h |  1 +
 bootdevice.c            | 31 +++++++++++++++++++++++++++++++
 hw/nvram/fw_cfg.c       | 14 +++++++++++---
 3 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 5bc5c79cbc..80c57fdc4e 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -106,6 +106,7 @@ void validate_bootdevices(const char *devices, Error **errp);
 void add_boot_device_lchs(DeviceState *dev, const char *suffix,
                           uint32_t lcyls, uint32_t lheads, uint32_t lsecs);
 void del_boot_device_lchs(DeviceState *dev, const char *suffix);
+char *get_boot_devices_lchs_list(size_t *size);
 
 /* handler to set the boot_device order for a specific type of MachineClass */
 typedef void QEMUBootSetHandler(void *opaque, const char *boot_order,
diff --git a/bootdevice.c b/bootdevice.c
index 2cf6b37c57..03aaffcc8d 100644
--- a/bootdevice.c
+++ b/bootdevice.c
@@ -405,3 +405,34 @@ void del_boot_device_lchs(DeviceState *dev, const char *suffix)
         }
     }
 }
+
+char *get_boot_devices_lchs_list(size_t *size)
+{
+    FWLCHSEntry *i;
+    size_t total = 0;
+    char *list = NULL;
+
+    QTAILQ_FOREACH(i, &fw_lchs, link) {
+        char *bootpath;
+        char *chs_string;
+        size_t len;
+
+        bootpath = get_boot_device_path(i->dev, false, i->suffix);
+        chs_string = g_strdup_printf("%s %" PRIu32 " %" PRIu32 " %" PRIu32,
+                                     bootpath, i->lcyls, i->lheads, i->lsecs);
+
+        if (total) {
+            list[total - 1] = '\n';
+        }
+        len = strlen(chs_string) + 1;
+        list = g_realloc(list, total + len);
+        memcpy(&list[total], chs_string, len);
+        total += len;
+        g_free(chs_string);
+        g_free(bootpath);
+    }
+
+    *size = total;
+
+    return list;
+}
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index aef1727250..44a3c19326 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -949,13 +949,21 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename,
 
 static void fw_cfg_machine_reset(void *opaque)
 {
+    MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
+    FWCfgState *s = opaque;
     void *ptr;
     size_t len;
-    FWCfgState *s = opaque;
-    char *bootindex = get_boot_devices_list(&len);
+    char *buf;
 
-    ptr = fw_cfg_modify_file(s, "bootorder", (uint8_t *)bootindex, len);
+    buf = get_boot_devices_list(&len);
+    ptr = fw_cfg_modify_file(s, "bootorder", (uint8_t *)buf, len);
     g_free(ptr);
+
+    if (!mc->legacy_fw_cfg_order) {
+        buf = get_boot_devices_lchs_list(&len);
+        ptr = fw_cfg_modify_file(s, "bios-geometry", (uint8_t *)buf, len);
+        g_free(ptr);
+    }
 }
 
 static void fw_cfg_machine_ready(struct Notifier *n, void *data)
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PULL 9/9] hd-geo-test: Add tests for lchs override
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (7 preceding siblings ...)
  2019-10-31 10:59 ` [PULL 8/9] bootdevice: FW_CFG interface for LCHS values John Snow
@ 2019-10-31 10:59 ` John Snow
  2019-10-31 14:04 ` [libvirt] [PULL 0/9] Ide patches no-reply
  2019-10-31 15:02 ` Peter Maydell
  10 siblings, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 10:59 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Philippe Mathieu-Daudé,
	Arbel Moshe, Laszlo Ersek, Gonglei (Arei),
	Sam Eiderman, Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Paolo Bonzini, Sam Eiderman, Max Reitz, John Snow, Karl Heubaum

From: Sam Eiderman <shmuel.eiderman@oracle.com>

Add QTest tests to check the logical geometry override option.

The tests in hd-geo-test are out of date - they only test IDE and do not
test interesting MBRs.

Creating qcow2 disks with specific size and MBR layout is currently
unused - we only use a default empty MBR.

Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
 tests/hd-geo-test.c    | 551 +++++++++++++++++++++++++++++++++++++++++
 tests/Makefile.include |   2 +-
 2 files changed, 552 insertions(+), 1 deletion(-)

diff --git a/tests/hd-geo-test.c b/tests/hd-geo-test.c
index 62eb624726..7e86c5416c 100644
--- a/tests/hd-geo-test.c
+++ b/tests/hd-geo-test.c
@@ -17,7 +17,12 @@
 
 #include "qemu/osdep.h"
 #include "qemu-common.h"
+#include "qemu/bswap.h"
+#include "qapi/qmp/qlist.h"
 #include "libqtest.h"
+#include "libqos/fw_cfg.h"
+#include "libqos/libqos.h"
+#include "standard-headers/linux/qemu_fw_cfg.h"
 
 #define ARGV_SIZE 256
 
@@ -388,6 +393,537 @@ static void test_ide_drive_cd_0(void)
     qtest_quit(qts);
 }
 
+typedef struct {
+    bool active;
+    uint32_t head;
+    uint32_t sector;
+    uint32_t cyl;
+    uint32_t end_head;
+    uint32_t end_sector;
+    uint32_t end_cyl;
+    uint32_t start_sect;
+    uint32_t nr_sects;
+} MBRpartitions[4];
+
+static MBRpartitions empty_mbr = { {false, 0, 0, 0, 0, 0, 0, 0, 0},
+                                   {false, 0, 0, 0, 0, 0, 0, 0, 0},
+                                   {false, 0, 0, 0, 0, 0, 0, 0, 0},
+                                   {false, 0, 0, 0, 0, 0, 0, 0, 0} };
+
+static char *create_qcow2_with_mbr(MBRpartitions mbr, uint64_t sectors)
+{
+    const char *template = "/tmp/qtest.XXXXXX";
+    char *raw_path = strdup(template);
+    char *qcow2_path = strdup(template);
+    char cmd[100 + 2 * PATH_MAX];
+    uint8_t buf[512];
+    int i, ret, fd, offset;
+    uint64_t qcow2_size = sectors * 512;
+    uint8_t status, parttype, head, sector, cyl;
+    char *qemu_img_path;
+    char *qemu_img_abs_path;
+
+    offset = 0xbe;
+
+    for (i = 0; i < 4; i++) {
+        status = mbr[i].active ? 0x80 : 0x00;
+        g_assert(mbr[i].head < 256);
+        g_assert(mbr[i].sector < 64);
+        g_assert(mbr[i].cyl < 1024);
+        head = mbr[i].head;
+        sector = mbr[i].sector + ((mbr[i].cyl & 0x300) >> 2);
+        cyl = mbr[i].cyl & 0xff;
+
+        buf[offset + 0x0] = status;
+        buf[offset + 0x1] = head;
+        buf[offset + 0x2] = sector;
+        buf[offset + 0x3] = cyl;
+
+        parttype = 0;
+        g_assert(mbr[i].end_head < 256);
+        g_assert(mbr[i].end_sector < 64);
+        g_assert(mbr[i].end_cyl < 1024);
+        head = mbr[i].end_head;
+        sector = mbr[i].end_sector + ((mbr[i].end_cyl & 0x300) >> 2);
+        cyl = mbr[i].end_cyl & 0xff;
+
+        buf[offset + 0x4] = parttype;
+        buf[offset + 0x5] = head;
+        buf[offset + 0x6] = sector;
+        buf[offset + 0x7] = cyl;
+
+        (*(uint32_t *)&buf[offset + 0x8]) = cpu_to_le32(mbr[i].start_sect);
+        (*(uint32_t *)&buf[offset + 0xc]) = cpu_to_le32(mbr[i].nr_sects);
+
+        offset += 0x10;
+    }
+
+    fd = mkstemp(raw_path);
+    g_assert(fd);
+    close(fd);
+
+    fd = open(raw_path, O_WRONLY);
+    g_assert(fd >= 0);
+    ret = write(fd, buf, sizeof(buf));
+    g_assert(ret == sizeof(buf));
+    close(fd);
+
+    fd = mkstemp(qcow2_path);
+    g_assert(fd);
+    close(fd);
+
+    qemu_img_path = getenv("QTEST_QEMU_IMG");
+    g_assert(qemu_img_path);
+    qemu_img_abs_path = realpath(qemu_img_path, NULL);
+    g_assert(qemu_img_abs_path);
+
+    ret = snprintf(cmd, sizeof(cmd),
+                   "%s convert -f raw -O qcow2 %s %s > /dev/null",
+                   qemu_img_abs_path,
+                   raw_path, qcow2_path);
+    g_assert((0 < ret) && (ret <= sizeof(cmd)));
+    ret = system(cmd);
+    g_assert(ret == 0);
+
+    ret = snprintf(cmd, sizeof(cmd),
+                   "%s resize %s %" PRIu64 " > /dev/null",
+                   qemu_img_abs_path,
+                   qcow2_path, qcow2_size);
+    g_assert((0 < ret) && (ret <= sizeof(cmd)));
+    ret = system(cmd);
+    g_assert(ret == 0);
+
+    free(qemu_img_abs_path);
+
+    unlink(raw_path);
+    free(raw_path);
+
+    return qcow2_path;
+}
+
+#define BIOS_GEOMETRY_MAX_SIZE 10000
+
+typedef struct {
+    uint32_t c;
+    uint32_t h;
+    uint32_t s;
+} CHS;
+
+typedef struct {
+    const char *dev_path;
+    CHS chs;
+} CHSResult;
+
+static void read_bootdevices(QFWCFG *fw_cfg, CHSResult expected[])
+{
+    char *buf = g_malloc0(BIOS_GEOMETRY_MAX_SIZE);
+    char *cur;
+    GList *results = NULL, *cur_result;
+    CHSResult *r;
+    int i;
+    int res;
+    bool found;
+
+    qfw_cfg_get_file(fw_cfg, "bios-geometry", buf, BIOS_GEOMETRY_MAX_SIZE);
+
+    for (cur = buf; *cur; cur++) {
+        if (*cur == '\n') {
+            *cur = '\0';
+        }
+    }
+    cur = buf;
+
+    while (strlen(cur)) {
+
+        r = g_malloc0(sizeof(*r));
+        r->dev_path = g_malloc0(strlen(cur) + 1);
+        res = sscanf(cur, "%s %" PRIu32 " %" PRIu32 " %" PRIu32,
+                     (char *)r->dev_path,
+                     &(r->chs.c), &(r->chs.h), &(r->chs.s));
+
+        g_assert(res == 4);
+
+        results = g_list_prepend(results, r);
+
+        cur += strlen(cur) + 1;
+    }
+
+    i = 0;
+
+    while (expected[i].dev_path) {
+        found = false;
+        cur_result = results;
+        while (cur_result) {
+            r = cur_result->data;
+            if (!strcmp(r->dev_path, expected[i].dev_path) &&
+                !memcmp(&(r->chs), &(expected[i].chs), sizeof(r->chs))) {
+                found = true;
+                break;
+            }
+            cur_result = g_list_next(cur_result);
+        }
+        g_assert(found);
+        g_free((char *)((CHSResult *)cur_result->data)->dev_path);
+        g_free(cur_result->data);
+        results = g_list_delete_link(results, cur_result);
+        i++;
+    }
+
+    g_assert(results == NULL);
+
+    g_free(buf);
+}
+
+#define MAX_DRIVES 30
+
+typedef struct {
+    char **argv;
+    int argc;
+    char **drives;
+    int n_drives;
+    int n_scsi_disks;
+    int n_scsi_controllers;
+    int n_virtio_disks;
+} TestArgs;
+
+static TestArgs *create_args(void)
+{
+    TestArgs *args = g_malloc0(sizeof(*args));
+    args->argv = g_new0(char *, ARGV_SIZE);
+    args->argc = append_arg(args->argc, args->argv,
+                            ARGV_SIZE, g_strdup("-nodefaults"));
+    args->drives = g_new0(char *, MAX_DRIVES);
+    return args;
+}
+
+static void add_drive_with_mbr(TestArgs *args,
+                               MBRpartitions mbr, uint64_t sectors)
+{
+    char *img_file_name;
+    char part[300];
+    int ret;
+
+    g_assert(args->n_drives < MAX_DRIVES);
+
+    img_file_name = create_qcow2_with_mbr(mbr, sectors);
+
+    args->drives[args->n_drives] = img_file_name;
+    ret = snprintf(part, sizeof(part),
+                   "-drive file=%s,if=none,format=qcow2,id=disk%d",
+                   img_file_name, args->n_drives);
+    g_assert((0 < ret) && (ret <= sizeof(part)));
+    args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part));
+    args->n_drives++;
+}
+
+static void add_ide_disk(TestArgs *args,
+                         int drive_idx, int bus, int unit, int c, int h, int s)
+{
+    char part[300];
+    int ret;
+
+    ret = snprintf(part, sizeof(part),
+                   "-device ide-hd,drive=disk%d,bus=ide.%d,unit=%d,"
+                   "lcyls=%d,lheads=%d,lsecs=%d",
+                   drive_idx, bus, unit, c, h, s);
+    g_assert((0 < ret) && (ret <= sizeof(part)));
+    args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part));
+}
+
+static void add_scsi_controller(TestArgs *args,
+                                const char *type,
+                                const char *bus,
+                                int addr)
+{
+    char part[300];
+    int ret;
+
+    ret = snprintf(part, sizeof(part),
+                   "-device %s,id=scsi%d,bus=%s,addr=%d",
+                   type, args->n_scsi_controllers, bus, addr);
+    g_assert((0 < ret) && (ret <= sizeof(part)));
+    args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part));
+    args->n_scsi_controllers++;
+}
+
+static void add_scsi_disk(TestArgs *args,
+                          int drive_idx, int bus,
+                          int channel, int scsi_id, int lun,
+                          int c, int h, int s)
+{
+    char part[300];
+    int ret;
+
+    ret = snprintf(part, sizeof(part),
+                   "-device scsi-hd,id=scsi-disk%d,drive=disk%d,"
+                   "bus=scsi%d.0,"
+                   "channel=%d,scsi-id=%d,lun=%d,"
+                   "lcyls=%d,lheads=%d,lsecs=%d",
+                   args->n_scsi_disks, drive_idx, bus, channel, scsi_id, lun,
+                   c, h, s);
+    g_assert((0 < ret) && (ret <= sizeof(part)));
+    args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part));
+    args->n_scsi_disks++;
+}
+
+static void add_virtio_disk(TestArgs *args,
+                            int drive_idx, const char *bus, int addr,
+                            int c, int h, int s)
+{
+    char part[300];
+    int ret;
+
+    ret = snprintf(part, sizeof(part),
+                   "-device virtio-blk-pci,id=virtio-disk%d,"
+                   "drive=disk%d,bus=%s,addr=%d,"
+                   "lcyls=%d,lheads=%d,lsecs=%d",
+                   args->n_virtio_disks, drive_idx, bus, addr, c, h, s);
+    g_assert((0 < ret) && (ret <= sizeof(part)));
+    args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part));
+    args->n_virtio_disks++;
+}
+
+static void test_override(TestArgs *args, CHSResult expected[])
+{
+    QTestState *qts;
+    char *joined_args;
+    QFWCFG *fw_cfg;
+    int i;
+
+    joined_args = g_strjoinv(" ", args->argv);
+
+    qts = qtest_init(joined_args);
+    fw_cfg = pc_fw_cfg_init(qts);
+
+    read_bootdevices(fw_cfg, expected);
+
+    g_free(joined_args);
+    qtest_quit(qts);
+
+    g_free(fw_cfg);
+
+    for (i = 0; i < args->n_drives; i++) {
+        unlink(args->drives[i]);
+        free(args->drives[i]);
+    }
+    g_free(args->drives);
+    g_strfreev(args->argv);
+    g_free(args);
+}
+
+static void test_override_ide(void)
+{
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {"/pci@i0cf8/ide@1,1/drive@0/disk@0", {10000, 120, 30} },
+        {"/pci@i0cf8/ide@1,1/drive@0/disk@1", {9000, 120, 30} },
+        {"/pci@i0cf8/ide@1,1/drive@1/disk@0", {0, 1, 1} },
+        {"/pci@i0cf8/ide@1,1/drive@1/disk@1", {1, 0, 0} },
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_ide_disk(args, 0, 0, 0, 10000, 120, 30);
+    add_ide_disk(args, 1, 0, 1, 9000, 120, 30);
+    add_ide_disk(args, 2, 1, 0, 0, 1, 1);
+    add_ide_disk(args, 3, 1, 1, 1, 0, 0);
+    test_override(args, expected);
+}
+
+static void test_override_scsi(void)
+{
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {"/pci@i0cf8/scsi@3/channel@0/disk@0,0", {10000, 120, 30} },
+        {"/pci@i0cf8/scsi@3/channel@0/disk@1,0", {9000, 120, 30} },
+        {"/pci@i0cf8/scsi@3/channel@0/disk@2,0", {1, 0, 0} },
+        {"/pci@i0cf8/scsi@3/channel@0/disk@3,0", {0, 1, 0} },
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_scsi_controller(args, "lsi53c895a", "pci.0", 3);
+    add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
+    add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
+    add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0);
+    add_scsi_disk(args, 3, 0, 0, 3, 0, 0, 1, 0);
+    test_override(args, expected);
+}
+
+static void test_override_scsi_2_controllers(void)
+{
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {"/pci@i0cf8/scsi@3/channel@0/disk@0,0", {10000, 120, 30} },
+        {"/pci@i0cf8/scsi@3/channel@0/disk@1,0", {9000, 120, 30} },
+        {"/pci@i0cf8/scsi@4/channel@0/disk@0,1", {1, 0, 0} },
+        {"/pci@i0cf8/scsi@4/channel@0/disk@1,2", {0, 1, 0} },
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_scsi_controller(args, "lsi53c895a", "pci.0", 3);
+    add_scsi_controller(args, "virtio-scsi-pci", "pci.0", 4);
+    add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
+    add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
+    add_scsi_disk(args, 2, 1, 0, 0, 1, 1, 0, 0);
+    add_scsi_disk(args, 3, 1, 0, 1, 2, 0, 1, 0);
+    test_override(args, expected);
+}
+
+static void test_override_virtio_blk(void)
+{
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {"/pci@i0cf8/scsi@3/disk@0,0", {10000, 120, 30} },
+        {"/pci@i0cf8/scsi@4/disk@0,0", {9000, 120, 30} },
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_virtio_disk(args, 0, "pci.0", 3, 10000, 120, 30);
+    add_virtio_disk(args, 1, "pci.0", 4, 9000, 120, 30);
+    test_override(args, expected);
+}
+
+static void test_override_zero_chs(void)
+{
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_ide_disk(args, 0, 1, 1, 0, 0, 0);
+    test_override(args, expected);
+}
+
+static void test_override_scsi_hot_unplug(void)
+{
+    QTestState *qts;
+    char *joined_args;
+    QFWCFG *fw_cfg;
+    QDict *response;
+    int i;
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {"/pci@i0cf8/scsi@2/channel@0/disk@0,0", {10000, 120, 30} },
+        {"/pci@i0cf8/scsi@2/channel@0/disk@1,0", {20, 20, 20} },
+        {NULL, {0, 0, 0} }
+    };
+    CHSResult expected2[] = {
+        {"/pci@i0cf8/scsi@2/channel@0/disk@1,0", {20, 20, 20} },
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_scsi_controller(args, "virtio-scsi-pci", "pci.0", 2);
+    add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
+    add_scsi_disk(args, 1, 0, 0, 1, 0, 20, 20, 20);
+
+    joined_args = g_strjoinv(" ", args->argv);
+
+    qts = qtest_init(joined_args);
+    fw_cfg = pc_fw_cfg_init(qts);
+
+    read_bootdevices(fw_cfg, expected);
+
+    /* unplug device an restart */
+    response = qtest_qmp(qts,
+                         "{ 'execute': 'device_del',"
+                         "  'arguments': {'id': 'scsi-disk0' }}");
+    g_assert(response);
+    g_assert(!qdict_haskey(response, "error"));
+    qobject_unref(response);
+    response = qtest_qmp(qts,
+                         "{ 'execute': 'system_reset', 'arguments': { }}");
+    g_assert(response);
+    g_assert(!qdict_haskey(response, "error"));
+    qobject_unref(response);
+
+    qtest_qmp_eventwait(qts, "RESET");
+
+    read_bootdevices(fw_cfg, expected2);
+
+    g_free(joined_args);
+    qtest_quit(qts);
+
+    g_free(fw_cfg);
+
+    for (i = 0; i < args->n_drives; i++) {
+        unlink(args->drives[i]);
+        free(args->drives[i]);
+    }
+    g_free(args->drives);
+    g_strfreev(args->argv);
+    g_free(args);
+}
+
+static void test_override_virtio_hot_unplug(void)
+{
+    QTestState *qts;
+    char *joined_args;
+    QFWCFG *fw_cfg;
+    QDict *response;
+    int i;
+    TestArgs *args = create_args();
+    CHSResult expected[] = {
+        {"/pci@i0cf8/scsi@2/disk@0,0", {10000, 120, 30} },
+        {"/pci@i0cf8/scsi@3/disk@0,0", {20, 20, 20} },
+        {NULL, {0, 0, 0} }
+    };
+    CHSResult expected2[] = {
+        {"/pci@i0cf8/scsi@3/disk@0,0", {20, 20, 20} },
+        {NULL, {0, 0, 0} }
+    };
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_drive_with_mbr(args, empty_mbr, 1);
+    add_virtio_disk(args, 0, "pci.0", 2, 10000, 120, 30);
+    add_virtio_disk(args, 1, "pci.0", 3, 20, 20, 20);
+
+    joined_args = g_strjoinv(" ", args->argv);
+
+    qts = qtest_init(joined_args);
+    fw_cfg = pc_fw_cfg_init(qts);
+
+    read_bootdevices(fw_cfg, expected);
+
+    /* unplug device an restart */
+    response = qtest_qmp(qts,
+                         "{ 'execute': 'device_del',"
+                         "  'arguments': {'id': 'virtio-disk0' }}");
+    g_assert(response);
+    g_assert(!qdict_haskey(response, "error"));
+    qobject_unref(response);
+    response = qtest_qmp(qts,
+                         "{ 'execute': 'system_reset', 'arguments': { }}");
+    g_assert(response);
+    g_assert(!qdict_haskey(response, "error"));
+    qobject_unref(response);
+
+    qtest_qmp_eventwait(qts, "RESET");
+
+    read_bootdevices(fw_cfg, expected2);
+
+    g_free(joined_args);
+    qtest_quit(qts);
+
+    g_free(fw_cfg);
+
+    for (i = 0; i < args->n_drives; i++) {
+        unlink(args->drives[i]);
+        free(args->drives[i]);
+    }
+    g_free(args->drives);
+    g_strfreev(args->argv);
+    g_free(args);
+}
+
 int main(int argc, char **argv)
 {
     Backend i;
@@ -413,6 +949,21 @@ int main(int argc, char **argv)
     qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs);
     qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs);
     qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst);
+    if (have_qemu_img()) {
+        qtest_add_func("hd-geo/override/ide", test_override_ide);
+        qtest_add_func("hd-geo/override/scsi", test_override_scsi);
+        qtest_add_func("hd-geo/override/scsi_2_controllers",
+                       test_override_scsi_2_controllers);
+        qtest_add_func("hd-geo/override/virtio_blk", test_override_virtio_blk);
+        qtest_add_func("hd-geo/override/zero_chs", test_override_zero_chs);
+        qtest_add_func("hd-geo/override/scsi_hot_unplug",
+                       test_override_scsi_hot_unplug);
+        qtest_add_func("hd-geo/override/virtio_hot_unplug",
+                       test_override_virtio_hot_unplug);
+    } else {
+        g_test_message("QTEST_QEMU_IMG not set or qemu-img missing; "
+                       "skipping hd-geo/override/* tests");
+    }
 
     ret = g_test_run();
 
diff --git a/tests/Makefile.include b/tests/Makefile.include
index c79402ab75..728d802dbd 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -794,7 +794,7 @@ tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y)
 tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y) qemu-img$(EXESUF)
 tests/ipmi-kcs-test$(EXESUF): tests/ipmi-kcs-test.o
 tests/ipmi-bt-test$(EXESUF): tests/ipmi-bt-test.o
-tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
+tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o $(libqos-obj-y)
 tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
 tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
 tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [libvirt] [PULL 0/9] Ide patches
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (8 preceding siblings ...)
  2019-10-31 10:59 ` [PULL 9/9] hd-geo-test: Add tests for lchs override John Snow
@ 2019-10-31 14:04 ` no-reply
  2019-10-31 15:02 ` Peter Maydell
  10 siblings, 0 replies; 22+ messages in thread
From: no-reply @ 2019-10-31 14:04 UTC (permalink / raw)
  To: jsnow
  Cc: kwolf, peter.maydell, thuth, qemu-block, mst, libvir-list,
	lersek, qemu-devel, mreitz, jsnow, arei.gonglei, kraxel,
	stefanha, lvivier, pbonzini, fam, philmd

Patchew URL: https://patchew.org/QEMU/20191031105904.12194-1-jsnow@redhat.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [libvirt] [PULL 0/9] Ide patches
Type: series
Message-id: 20191031105904.12194-1-jsnow@redhat.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Switched to a new branch 'test'
d278ccf hd-geo-test: Add tests for lchs override
28807d7 bootdevice: FW_CFG interface for LCHS values
11f27f1 bootdevice: Refactor get_boot_devices_list
e032fef bootdevice: Gather LCHS from all relevant devices
74eb334 scsi: Propagate unrealize() callback to scsi-hd
e211495 bootdevice: Add interface to gather LCHS
a683977 block: Support providing LCHS from user
071ac63 block: Refactor macros - fix tabbing
90e6789 IDE: deprecate ide-drive

=== OUTPUT BEGIN ===
1/9 Checking commit 90e67898e3b9 (IDE: deprecate ide-drive)
2/9 Checking commit 071ac63ed092 (block: Refactor macros - fix tabbing)
ERROR: Macros with complex values should be enclosed in parenthesis
#58: FILE: include/hw/block/block.h:65:
+#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf)                      \
+    DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0),                  \
+    DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0),                \
     DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0)

total: 1 errors, 0 warnings, 37 lines checked

Patch 2/9 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

3/9 Checking commit a68397755180 (block: Support providing LCHS from user)
4/9 Checking commit e21149531919 (bootdevice: Add interface to gather LCHS)
5/9 Checking commit 74eb33489f71 (scsi: Propagate unrealize() callback to scsi-hd)
6/9 Checking commit e032fefe3098 (bootdevice: Gather LCHS from all relevant devices)
7/9 Checking commit 11f27f1f9e10 (bootdevice: Refactor get_boot_devices_list)
8/9 Checking commit 28807d78bb01 (bootdevice: FW_CFG interface for LCHS values)
9/9 Checking commit d278ccfd1965 (hd-geo-test: Add tests for lchs override)
WARNING: Block comments use a leading /* on a separate line
#607: FILE: tests/hd-geo-test.c:965:
+                       "skipping hd-geo/override/* tests");

total: 0 errors, 1 warnings, 578 lines checked

Patch 9/9 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20191031105904.12194-1-jsnow@redhat.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PULL 0/9] Ide patches
  2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
                   ` (9 preceding siblings ...)
  2019-10-31 14:04 ` [libvirt] [PULL 0/9] Ide patches no-reply
@ 2019-10-31 15:02 ` Peter Maydell
  2019-10-31 15:45   ` John Snow
  2019-10-31 15:54   ` git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches) John Snow
  10 siblings, 2 replies; 22+ messages in thread
From: Peter Maydell @ 2019-10-31 15:02 UTC (permalink / raw)
  To: John Snow
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, Qemu-block,
	Michael S. Tsirkin, Libvirt, Laszlo Ersek, QEMU Developers,
	Max Reitz, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, Paolo Bonzini,
	Philippe Mathieu-Daudé

On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
>
> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
>
>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
>
> are available in the Git repository at:
>
>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
>
> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
>
>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
>
> ----------------------------------------------------------------
> Pull request
>

Hi -- this passed the merge tests but it looks like you forgot
to add your signed-off by line as the submaintainer to Sam's
patches. Could you fix that up and resend, please?

thanks
-- PMM


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PULL 0/9] Ide patches
  2019-10-31 15:02 ` Peter Maydell
@ 2019-10-31 15:45   ` John Snow
  2019-10-31 15:54   ` git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches) John Snow
  1 sibling, 0 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 15:45 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, Qemu-block,
	Michael S. Tsirkin, Libvirt, Laszlo Ersek, QEMU Developers,
	Max Reitz, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, Paolo Bonzini,
	Philippe Mathieu-Daudé



On 10/31/19 11:02 AM, Peter Maydell wrote:
> On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
>>
>> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
>>
>>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
>>
>> are available in the Git repository at:
>>
>>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
>>
>> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
>>
>>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
>>
>> ----------------------------------------------------------------
>> Pull request
>>
> 
> Hi -- this passed the merge tests but it looks like you forgot
> to add your signed-off by line as the submaintainer to Sam's
> patches. Could you fix that up and resend, please?
> 
> thanks
> -- PMM
> 

Haha. I re-applied them to grab Phil's SOBs and that dropped mine.

OK, re-spinning.

(Note to self: add a check to git-publish --pull that looks for my SOB.)



^ permalink raw reply	[flat|nested] 22+ messages in thread

* git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches)
  2019-10-31 15:02 ` Peter Maydell
  2019-10-31 15:45   ` John Snow
@ 2019-10-31 15:54   ` John Snow
  2019-11-05 19:38     ` Eduardo Habkost
  2019-11-05 20:17     ` Stefan Hajnoczi
  1 sibling, 2 replies; 22+ messages in thread
From: John Snow @ 2019-10-31 15:54 UTC (permalink / raw)
  To: Eduardo Habkost; +Cc: Peter Maydell, QEMU Developers, Stefan Hajnoczi



On 10/31/19 11:02 AM, Peter Maydell wrote:
> On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
>>
>> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
>>
>>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
>>
>> are available in the Git repository at:
>>
>>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
>>
>> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
>>
>>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
>>
>> ----------------------------------------------------------------
>> Pull request
>>
> 
> Hi -- this passed the merge tests but it looks like you forgot
> to add your signed-off by line as the submaintainer to Sam's
> patches. Could you fix that up and resend, please?
> 
> thanks
> -- PMM
> 

I bit myself twice with this now: adding --signoff to a pull request
signs the messages that get sent to list, but not the ones that get staged.

Could always be a bug in my local copy, but I'm documenting it on the
list, in case I don't get time to look at this in the next 24h.

--js



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PULL 1/9] IDE: deprecate ide-drive
  2019-10-31 10:58 ` [PULL 1/9] IDE: deprecate ide-drive John Snow
@ 2019-10-31 22:02   ` Paolo Bonzini
  2019-11-01  5:40     ` Markus Armbruster
  2019-11-01 10:11     ` [libvirt] " Peter Krempa
  0 siblings, 2 replies; 22+ messages in thread
From: Paolo Bonzini @ 2019-10-31 22:02 UTC (permalink / raw)
  To: John Snow, qemu-devel
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, Peter Krempa, qemu-block,
	Michael S. Tsirkin, libvir-list, Laszlo Ersek, Markus Armbruster,
	Max Reitz, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier,
	Philippe Mathieu-Daudé

On 31/10/19 11:58, John Snow wrote:
> It's an old compatibility shim that just delegates to ide-cd or ide-hd.
> I'd like to refactor these some day, and getting rid of the super-object
> will make that easier.
> 
> Either way, we don't need this.

Good idea.  I will prepare a similar patch for scsi-disk, even though
technically we're already in soft freeze; it makes no sense to deprecate
only one of the two.

Paolo

> Signed-off-by: John Snow <jsnow@redhat.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> ACKed-by: Peter Krempa <pkrempa@redhat.com>
> Message-id: 20191009224303.10232-2-jsnow@redhat.com
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  qemu-deprecated.texi          | 5 +++++
>  hw/ide/qdev.c                 | 3 +++
>  tests/qemu-iotests/051.pc.out | 6 ++++--
>  3 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index f727bd3932..296bfc93a3 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -254,6 +254,11 @@ quite a bit. It will be removed without replacement unless some users speaks
>  up at the @email{qemu-devel@@nongnu.org} mailing list with information about
>  their usecases.
>  
> +@subsection ide-drive (since 4.2)
> +
> +The 'ide-drive' device is deprecated. Users should use 'ide-hd' or
> +'ide-cd' as appropriate to get an IDE hard disk or CD-ROM as needed.
> +
>  @section System emulator machines
>  
>  @subsection pc-0.12, pc-0.13, pc-0.14 and pc-0.15 (since 4.0)
> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
> index 6fba6b62b8..3666e59721 100644
> --- a/hw/ide/qdev.c
> +++ b/hw/ide/qdev.c
> @@ -279,6 +279,9 @@ static void ide_drive_realize(IDEDevice *dev, Error **errp)
>  {
>      DriveInfo *dinfo = NULL;
>  
> +    warn_report("'ide-drive' is deprecated, "
> +                "please use 'ide-hd' or 'ide-cd' instead");
> +
>      if (dev->conf.blk) {
>          dinfo = blk_legacy_dinfo(dev->conf.blk);
>      }
> diff --git a/tests/qemu-iotests/051.pc.out b/tests/qemu-iotests/051.pc.out
> index 000557c7c8..34849dd172 100644
> --- a/tests/qemu-iotests/051.pc.out
> +++ b/tests/qemu-iotests/051.pc.out
> @@ -158,7 +158,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
>  
>  Testing: -drive if=none,id=disk -device ide-drive,drive=disk
>  QEMU X.Y.Z monitor - type 'help' for more information
> -(qemu) QEMU_PROG: -device ide-drive,drive=disk: Device needs media, but drive is empty
> +(qemu) QEMU_PROG: -device ide-drive,drive=disk: warning: 'ide-drive' is deprecated, please use 'ide-hd' or 'ide-cd' instead
> +QEMU_PROG: -device ide-drive,drive=disk: Device needs media, but drive is empty
>  
>  Testing: -drive if=none,id=disk -device ide-hd,drive=disk
>  QEMU X.Y.Z monitor - type 'help' for more information
> @@ -228,7 +229,8 @@ QEMU X.Y.Z monitor - type 'help' for more information
>  
>  Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-drive,drive=disk
>  QEMU X.Y.Z monitor - type 'help' for more information
> -(qemu) QEMU_PROG: -device ide-drive,drive=disk: Block node is read-only
> +(qemu) QEMU_PROG: -device ide-drive,drive=disk: warning: 'ide-drive' is deprecated, please use 'ide-hd' or 'ide-cd' instead
> +QEMU_PROG: -device ide-drive,drive=disk: Block node is read-only
>  
>  Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-hd,drive=disk
>  QEMU X.Y.Z monitor - type 'help' for more information
> 



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PULL 1/9] IDE: deprecate ide-drive
  2019-10-31 22:02   ` Paolo Bonzini
@ 2019-11-01  5:40     ` Markus Armbruster
  2019-11-01  7:12       ` Paolo Bonzini
  2019-11-01 10:11     ` [libvirt] " Peter Krempa
  1 sibling, 1 reply; 22+ messages in thread
From: Markus Armbruster @ 2019-11-01  5:40 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, Peter Krempa, qemu-block,
	Michael S. Tsirkin, libvir-list, Laszlo Ersek,
	Philippe Mathieu-Daudé,
	qemu-devel, Max Reitz, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, John Snow

Paolo Bonzini <pbonzini@redhat.com> writes:

> On 31/10/19 11:58, John Snow wrote:
>> It's an old compatibility shim that just delegates to ide-cd or ide-hd.
>> I'd like to refactor these some day, and getting rid of the super-object
>> will make that easier.
>> 
>> Either way, we don't need this.
>
> Good idea.  I will prepare a similar patch for scsi-disk, even though
> technically we're already in soft freeze; it makes no sense to deprecate
> only one of the two.

We still use scsi-disk for -drive if=scsi,... and for the desugaring of
the usb-storage device, via scsi_bus_legacy_add_drive().  I figure you'd
need to either wean them off scsi-disk or deprecate them, too.



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PULL 1/9] IDE: deprecate ide-drive
  2019-11-01  5:40     ` Markus Armbruster
@ 2019-11-01  7:12       ` Paolo Bonzini
  0 siblings, 0 replies; 22+ messages in thread
From: Paolo Bonzini @ 2019-11-01  7:12 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, Peter Krempa, qemu-block,
	Michael S. Tsirkin, libvir-list, Laszlo Ersek,
	Philippe Mathieu-Daudé,
	qemu-devel, Max Reitz, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, John Snow

On 01/11/19 06:40, Markus Armbruster wrote:
> Paolo Bonzini <pbonzini@redhat.com> writes:
> 
>> On 31/10/19 11:58, John Snow wrote:
>>> It's an old compatibility shim that just delegates to ide-cd or ide-hd.
>>> I'd like to refactor these some day, and getting rid of the super-object
>>> will make that easier.
>>>
>>> Either way, we don't need this.
>>
>> Good idea.  I will prepare a similar patch for scsi-disk, even though
>> technically we're already in soft freeze; it makes no sense to deprecate
>> only one of the two.
> 
> We still use scsi-disk for -drive if=scsi,... and for the desugaring of
> the usb-storage device, via scsi_bus_legacy_add_drive().  I figure you'd
> need to either wean them off scsi-disk or deprecate them, too.

Yes, it's enough to add a bool media_cdrom argument to
scsi_bus_legacy_add_drive.

Paolo


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [libvirt] [PULL 1/9] IDE: deprecate ide-drive
  2019-10-31 22:02   ` Paolo Bonzini
  2019-11-01  5:40     ` Markus Armbruster
@ 2019-11-01 10:11     ` Peter Krempa
  1 sibling, 0 replies; 22+ messages in thread
From: Peter Krempa @ 2019-11-01 10:11 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Kevin Wolf, Fam Zheng, Thomas Huth, qemu-block,
	Michael S. Tsirkin, libvir-list, Laszlo Ersek,
	Philippe Mathieu-Daudé,
	qemu-devel, Max Reitz, Gonglei (Arei),
	Gerd Hoffmann, Stefan Hajnoczi, Laurent Vivier, John Snow

[-- Attachment #1: Type: text/plain, Size: 609 bytes --]

On Thu, Oct 31, 2019 at 23:02:45 +0100, Paolo Bonzini wrote:
> On 31/10/19 11:58, John Snow wrote:
> > It's an old compatibility shim that just delegates to ide-cd or ide-hd.
> > I'd like to refactor these some day, and getting rid of the super-object
> > will make that easier.
> > 
> > Either way, we don't need this.
> 
> Good idea.  I will prepare a similar patch for scsi-disk, even though
> technically we're already in soft freeze; it makes no sense to deprecate
> only one of the two.

I checked in libvirt and you are welcome to do so since we no longer use
it similarly to ide-disk.


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches)
  2019-10-31 15:54   ` git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches) John Snow
@ 2019-11-05 19:38     ` Eduardo Habkost
  2019-11-05 20:17     ` Stefan Hajnoczi
  1 sibling, 0 replies; 22+ messages in thread
From: Eduardo Habkost @ 2019-11-05 19:38 UTC (permalink / raw)
  To: John Snow; +Cc: Peter Maydell, QEMU Developers, Stefan Hajnoczi

On Thu, Oct 31, 2019 at 11:54:42AM -0400, John Snow wrote:
> On 10/31/19 11:02 AM, Peter Maydell wrote:
> > On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
> >>
> >> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
> >>
> >>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
> >>
> >> are available in the Git repository at:
> >>
> >>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
> >>
> >> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
> >>
> >>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
> >>
> >> ----------------------------------------------------------------
> >> Pull request
> >>
> > 
> > Hi -- this passed the merge tests but it looks like you forgot
> > to add your signed-off by line as the submaintainer to Sam's
> > patches. Could you fix that up and resend, please?
> > 
> > thanks
> > -- PMM
> > 
> 
> I bit myself twice with this now: adding --signoff to a pull request
> signs the messages that get sent to list, but not the ones that get staged.
> 
> Could always be a bug in my local copy, but I'm documenting it on the
> list, in case I don't get time to look at this in the next 24h.

Reported on GitHub, so we don't forget to look at it:
https://github.com/stefanha/git-publish/issues/76

-- 
Eduardo



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches)
  2019-10-31 15:54   ` git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches) John Snow
  2019-11-05 19:38     ` Eduardo Habkost
@ 2019-11-05 20:17     ` Stefan Hajnoczi
  2019-11-05 20:22       ` Eduardo Habkost
  1 sibling, 1 reply; 22+ messages in thread
From: Stefan Hajnoczi @ 2019-11-05 20:17 UTC (permalink / raw)
  To: John Snow
  Cc: Peter Maydell, Eduardo Habkost, Stefan Hajnoczi, QEMU Developers

On Thu, Oct 31, 2019 at 5:07 PM John Snow <jsnow@redhat.com> wrote:
> On 10/31/19 11:02 AM, Peter Maydell wrote:
> > On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
> >>
> >> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
> >>
> >>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
> >>
> >> are available in the Git repository at:
> >>
> >>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
> >>
> >> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
> >>
> >>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
> >>
> >> ----------------------------------------------------------------
> >> Pull request
> >>
> >
> > Hi -- this passed the merge tests but it looks like you forgot
> > to add your signed-off by line as the submaintainer to Sam's
> > patches. Could you fix that up and resend, please?
> >
> > thanks
> > -- PMM
> >
>
> I bit myself twice with this now: adding --signoff to a pull request
> signs the messages that get sent to list, but not the ones that get staged.
>
> Could always be a bug in my local copy, but I'm documenting it on the
> list, in case I don't get time to look at this in the next 24h.

Do you mean Signed-off-by is only added to emails that are sent and
not to the actual commits in your repo?

This is how git-format-patch(1) --signoff works.  git-publish does not
modify local commits either.

Some people would probably be surprised if git-publish modified their
commit history.

I'm not sure what the best solution here is, aside from introducing a
separate signoff option called --apply-signoff or similar so there is
no confusion.

Stefan


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches)
  2019-11-05 20:17     ` Stefan Hajnoczi
@ 2019-11-05 20:22       ` Eduardo Habkost
  2019-11-06  6:16         ` Stefan Hajnoczi
  0 siblings, 1 reply; 22+ messages in thread
From: Eduardo Habkost @ 2019-11-05 20:22 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: Peter Maydell, John Snow, QEMU Developers, Stefan Hajnoczi

On Tue, Nov 05, 2019 at 09:17:42PM +0100, Stefan Hajnoczi wrote:
> On Thu, Oct 31, 2019 at 5:07 PM John Snow <jsnow@redhat.com> wrote:
> > On 10/31/19 11:02 AM, Peter Maydell wrote:
> > > On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
> > >>
> > >> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
> > >>
> > >>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
> > >>
> > >> are available in the Git repository at:
> > >>
> > >>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
> > >>
> > >> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
> > >>
> > >>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
> > >>
> > >> ----------------------------------------------------------------
> > >> Pull request
> > >>
> > >
> > > Hi -- this passed the merge tests but it looks like you forgot
> > > to add your signed-off by line as the submaintainer to Sam's
> > > patches. Could you fix that up and resend, please?
> > >
> > > thanks
> > > -- PMM
> > >
> >
> > I bit myself twice with this now: adding --signoff to a pull request
> > signs the messages that get sent to list, but not the ones that get staged.
> >
> > Could always be a bug in my local copy, but I'm documenting it on the
> > list, in case I don't get time to look at this in the next 24h.
> 
> Do you mean Signed-off-by is only added to emails that are sent and
> not to the actual commits in your repo?
> 
> This is how git-format-patch(1) --signoff works.  git-publish does not
> modify local commits either.
> 
> Some people would probably be surprised if git-publish modified their
> commit history.
> 
> I'm not sure what the best solution here is, aside from introducing a
> separate signoff option called --apply-signoff or similar so there is
> no confusion.

I would make git-publish error out if --signoff and
--pull-request are used simultaneously.  I can't think of a
justification for having the email contents not match the git tag
contents in a pull request.

-- 
Eduardo



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches)
  2019-11-05 20:22       ` Eduardo Habkost
@ 2019-11-06  6:16         ` Stefan Hajnoczi
  0 siblings, 0 replies; 22+ messages in thread
From: Stefan Hajnoczi @ 2019-11-06  6:16 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Peter Maydell, John Snow, QEMU Developers, Stefan Hajnoczi

On Tue, Nov 5, 2019 at 9:22 PM Eduardo Habkost <ehabkost@redhat.com> wrote:
> On Tue, Nov 05, 2019 at 09:17:42PM +0100, Stefan Hajnoczi wrote:
> > On Thu, Oct 31, 2019 at 5:07 PM John Snow <jsnow@redhat.com> wrote:
> > > On 10/31/19 11:02 AM, Peter Maydell wrote:
> > > > On Thu, 31 Oct 2019 at 10:59, John Snow <jsnow@redhat.com> wrote:
> > > >>
> > > >> The following changes since commit 68d8ef4ec540682c3538d4963e836e43a211dd17:
> > > >>
> > > >>   Merge remote-tracking branch 'remotes/stsquad/tags/pull-tcg-plugins-281019-4' into staging (2019-10-30 14:10:32 +0000)
> > > >>
> > > >> are available in the Git repository at:
> > > >>
> > > >>   https://github.com/jnsnow/qemu.git tags/ide-pull-request
> > > >>
> > > >> for you to fetch changes up to c35564caf20e8d3431786dddf0fa513daa7d7f3c:
> > > >>
> > > >>   hd-geo-test: Add tests for lchs override (2019-10-31 06:11:34 -0400)
> > > >>
> > > >> ----------------------------------------------------------------
> > > >> Pull request
> > > >>
> > > >
> > > > Hi -- this passed the merge tests but it looks like you forgot
> > > > to add your signed-off by line as the submaintainer to Sam's
> > > > patches. Could you fix that up and resend, please?
> > > >
> > > > thanks
> > > > -- PMM
> > > >
> > >
> > > I bit myself twice with this now: adding --signoff to a pull request
> > > signs the messages that get sent to list, but not the ones that get staged.
> > >
> > > Could always be a bug in my local copy, but I'm documenting it on the
> > > list, in case I don't get time to look at this in the next 24h.
> >
> > Do you mean Signed-off-by is only added to emails that are sent and
> > not to the actual commits in your repo?
> >
> > This is how git-format-patch(1) --signoff works.  git-publish does not
> > modify local commits either.
> >
> > Some people would probably be surprised if git-publish modified their
> > commit history.
> >
> > I'm not sure what the best solution here is, aside from introducing a
> > separate signoff option called --apply-signoff or similar so there is
> > no confusion.
>
> I would make git-publish error out if --signoff and
> --pull-request are used simultaneously.  I can't think of a
> justification for having the email contents not match the git tag
> contents in a pull request.

Sounds good!

Stefan


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2019-11-06  6:17 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
2019-10-31 10:58 ` [PULL 1/9] IDE: deprecate ide-drive John Snow
2019-10-31 22:02   ` Paolo Bonzini
2019-11-01  5:40     ` Markus Armbruster
2019-11-01  7:12       ` Paolo Bonzini
2019-11-01 10:11     ` [libvirt] " Peter Krempa
2019-10-31 10:58 ` [PULL 2/9] block: Refactor macros - fix tabbing John Snow
2019-10-31 10:58 ` [PULL 3/9] block: Support providing LCHS from user John Snow
2019-10-31 10:58 ` [PULL 4/9] bootdevice: Add interface to gather LCHS John Snow
2019-10-31 10:59 ` [PULL 5/9] scsi: Propagate unrealize() callback to scsi-hd John Snow
2019-10-31 10:59 ` [PULL 6/9] bootdevice: Gather LCHS from all relevant devices John Snow
2019-10-31 10:59 ` [PULL 7/9] bootdevice: Refactor get_boot_devices_list John Snow
2019-10-31 10:59 ` [PULL 8/9] bootdevice: FW_CFG interface for LCHS values John Snow
2019-10-31 10:59 ` [PULL 9/9] hd-geo-test: Add tests for lchs override John Snow
2019-10-31 14:04 ` [libvirt] [PULL 0/9] Ide patches no-reply
2019-10-31 15:02 ` Peter Maydell
2019-10-31 15:45   ` John Snow
2019-10-31 15:54   ` git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches) John Snow
2019-11-05 19:38     ` Eduardo Habkost
2019-11-05 20:17     ` Stefan Hajnoczi
2019-11-05 20:22       ` Eduardo Habkost
2019-11-06  6:16         ` Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).