All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, quintela@redhat.com, dbaryshkov@gmail.com,
	stefano.stabellini@eu.citrix.com, lcapitulino@redhat.com,
	amit.shah@redhat.com
Subject: [Qemu-devel] [PATCH 03/55] block: Attach non-qdev devices as well
Date: Wed, 20 Jul 2011 18:23:37 +0200	[thread overview]
Message-ID: <1311179069-27882-4-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1311179069-27882-1-git-send-email-armbru@redhat.com>

For now, this just protects against programming errors like having the
same drive back multiple non-qdev devices, or untimely bdrv_delete().
Later commits will add other interesting uses.

While there, rename BlockDriverState member peer to dev, bdrv_attach()
to bdrv_attach_dev(), bdrv_detach() to bdrv_detach_dev(), and
bdrv_get_attached() to bdrv_get_attached_dev().

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 block.c              |   29 ++++++++++++++++++++---------
 block.h              |    7 ++++---
 block_int.h          |    3 ++-
 blockdev.c           |    5 ++---
 hw/ide/core.c        |    1 +
 hw/nand.c            |    4 +++-
 hw/onenand.c         |    6 ++++--
 hw/pflash_cfi01.c    |    1 +
 hw/pflash_cfi02.c    |    1 +
 hw/qdev-properties.c |    6 +++---
 hw/sd.c              |    1 +
 hw/usb-msd.c         |    2 +-
 hw/xen_disk.c        |    1 +
 13 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/block.c b/block.c
index c49a825..1429028 100644
--- a/block.c
+++ b/block.c
@@ -703,7 +703,7 @@ void bdrv_make_anon(BlockDriverState *bs)
 
 void bdrv_delete(BlockDriverState *bs)
 {
-    assert(!bs->peer);
+    assert(!bs->dev);
 
     /* remove from list, if necessary */
     bdrv_make_anon(bs);
@@ -717,26 +717,37 @@ void bdrv_delete(BlockDriverState *bs)
     qemu_free(bs);
 }
 
-int bdrv_attach(BlockDriverState *bs, DeviceState *qdev)
+int bdrv_attach_dev(BlockDriverState *bs, void *dev)
+/* TODO change to DeviceState *dev when all users are qdevified */
 {
-    if (bs->peer) {
+    if (bs->dev) {
         return -EBUSY;
     }
-    bs->peer = qdev;
+    bs->dev = dev;
     return 0;
 }
 
-void bdrv_detach(BlockDriverState *bs, DeviceState *qdev)
+/* TODO qdevified devices don't use this, remove when devices are qdevified */
+void bdrv_attach_dev_nofail(BlockDriverState *bs, void *dev)
 {
-    assert(bs->peer == qdev);
-    bs->peer = NULL;
+    if (bdrv_attach_dev(bs, dev) < 0) {
+        abort();
+    }
+}
+
+void bdrv_detach_dev(BlockDriverState *bs, void *dev)
+/* TODO change to DeviceState *dev when all users are qdevified */
+{
+    assert(bs->dev == dev);
+    bs->dev = NULL;
     bs->change_cb = NULL;
     bs->change_opaque = NULL;
 }
 
-DeviceState *bdrv_get_attached(BlockDriverState *bs)
+/* TODO change to return DeviceState * when all users are qdevified */
+void *bdrv_get_attached_dev(BlockDriverState *bs)
 {
-    return bs->peer;
+    return bs->dev;
 }
 
 /*
diff --git a/block.h b/block.h
index 859d1d9..8d8172c 100644
--- a/block.h
+++ b/block.h
@@ -72,9 +72,10 @@ int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);
 int bdrv_open(BlockDriverState *bs, const char *filename, int flags,
               BlockDriver *drv);
 void bdrv_close(BlockDriverState *bs);
-int bdrv_attach(BlockDriverState *bs, DeviceState *qdev);
-void bdrv_detach(BlockDriverState *bs, DeviceState *qdev);
-DeviceState *bdrv_get_attached(BlockDriverState *bs);
+int bdrv_attach_dev(BlockDriverState *bs, void *dev);
+void bdrv_attach_dev_nofail(BlockDriverState *bs, void *dev);
+void bdrv_detach_dev(BlockDriverState *bs, void *dev);
+void *bdrv_get_attached_dev(BlockDriverState *bs);
 int bdrv_read(BlockDriverState *bs, int64_t sector_num,
               uint8_t *buf, int nb_sectors);
 int bdrv_write(BlockDriverState *bs, int64_t sector_num,
diff --git a/block_int.h b/block_int.h
index 1e265d2..1a23d8a 100644
--- a/block_int.h
+++ b/block_int.h
@@ -159,7 +159,8 @@ struct BlockDriverState {
     BlockDriver *drv; /* NULL means no media */
     void *opaque;
 
-    DeviceState *peer;
+    void *dev;                  /* attached device model, if any */
+    /* TODO change to DeviceState when all users are qdevified */
 
     char filename[1024];
     char backing_file[1024]; /* if non zero, the image is a diff of
diff --git a/blockdev.c b/blockdev.c
index fcab8da..13a9b41 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -14,7 +14,6 @@
 #include "qemu-option.h"
 #include "qemu-config.h"
 #include "sysemu.h"
-#include "hw/qdev.h"
 #include "block_int.h"
 
 static QTAILQ_HEAD(drivelist, DriveInfo) drives = QTAILQ_HEAD_INITIALIZER(drives);
@@ -747,12 +746,12 @@ int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data)
     bdrv_flush(bs);
     bdrv_close(bs);
 
-    /* if we have a device associated with this BlockDriverState (bs->peer)
+    /* if we have a device attached to this BlockDriverState
      * then we need to make the drive anonymous until the device
      * can be removed.  If this is a drive with no device backing
      * then we can just get rid of the block driver state right here.
      */
-    if (bs->peer) {
+    if (bdrv_get_attached_dev(bs)) {
         bdrv_make_anon(bs);
     } else {
         drive_uninit(drive_get_by_blockdev(bs));
diff --git a/hw/ide/core.c b/hw/ide/core.c
index d145b19..bcef8bc 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1865,6 +1865,7 @@ void ide_init2_with_non_qdev_drives(IDEBus *bus, DriveInfo *hd0,
                 error_report("Can't set up IDE drive %s", dinfo->id);
                 exit(1);
             }
+            bdrv_attach_dev_nofail(dinfo->bdrv, &bus->ifs[i]);
         } else {
             ide_reset(&bus->ifs[i]);
         }
diff --git a/hw/nand.c b/hw/nand.c
index 37e51d7..242cc02 100644
--- a/hw/nand.c
+++ b/hw/nand.c
@@ -463,8 +463,10 @@ NANDFlashState *nand_init(int manf_id, int chip_id)
 
     s = (NANDFlashState *) qemu_mallocz(sizeof(NANDFlashState));
     dinfo = drive_get(IF_MTD, 0, 0);
-    if (dinfo)
+    if (dinfo) {
         s->bdrv = dinfo->bdrv;
+        bdrv_attach_dev_nofail(s->bdrv, s);
+    }
     s->manf_id = manf_id;
     s->chip_id = chip_id;
     s->size = nand_flash_ids[s->chip_id].size << 20;
diff --git a/hw/onenand.c b/hw/onenand.c
index 71c1ab4..8382a6f 100644
--- a/hw/onenand.c
+++ b/hw/onenand.c
@@ -632,11 +632,13 @@ void *onenand_init(uint32_t id, int regshift, qemu_irq irq)
     s->density_mask = (id & (1 << 11)) ? (1 << (6 + ((id >> 12) & 7))) : 0;
     s->iomemtype = cpu_register_io_memory(onenand_readfn,
                     onenand_writefn, s, DEVICE_NATIVE_ENDIAN);
-    if (!dinfo)
+    if (!dinfo) {
         s->image = memset(qemu_malloc(size + (size >> 5)),
                         0xff, size + (size >> 5));
-    else
+    } else {
         s->bdrv = dinfo->bdrv;
+        bdrv_attach_dev_nofail(s->bdrv, s);
+    }
     s->otp = memset(qemu_malloc((64 + 2) << PAGE_SHIFT),
                     0xff, (64 + 2) << PAGE_SHIFT);
     s->ram = qemu_ram_alloc(NULL, "onenand.ram", 0xc000 << s->shift);
diff --git a/hw/pflash_cfi01.c b/hw/pflash_cfi01.c
index 90fdc84..285e385 100644
--- a/hw/pflash_cfi01.c
+++ b/hw/pflash_cfi01.c
@@ -620,6 +620,7 @@ pflash_t *pflash_cfi01_register(target_phys_addr_t base, ram_addr_t off,
             qemu_free(pfl);
             return NULL;
         }
+        bdrv_attach_dev_nofail(pfl->bs, pfl);
     }
 #if 0 /* XXX: there should be a bit to set up read-only,
        *      the same way the hardware does (with WP pin).
diff --git a/hw/pflash_cfi02.c b/hw/pflash_cfi02.c
index 725cd1e..059824d 100644
--- a/hw/pflash_cfi02.c
+++ b/hw/pflash_cfi02.c
@@ -643,6 +643,7 @@ pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off,
             qemu_free(pfl);
             return NULL;
         }
+        bdrv_attach_dev_nofail(pfl->bs, pfl);
     }
 #if 0 /* XXX: there should be a bit to set up read-only,
        *      the same way the hardware does (with WP pin).
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index eff2d24..f06b317 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -312,7 +312,7 @@ static int parse_drive(DeviceState *dev, Property *prop, const char *str)
     bs = bdrv_find(str);
     if (bs == NULL)
         return -ENOENT;
-    if (bdrv_attach(bs, dev) < 0)
+    if (bdrv_attach_dev(bs, dev) < 0)
         return -EEXIST;
     *ptr = bs;
     return 0;
@@ -323,7 +323,7 @@ static void free_drive(DeviceState *dev, Property *prop)
     BlockDriverState **ptr = qdev_get_prop_ptr(dev, prop);
 
     if (*ptr) {
-        bdrv_detach(*ptr, dev);
+        bdrv_detach_dev(*ptr, dev);
         blockdev_auto_del(*ptr);
     }
 }
@@ -678,7 +678,7 @@ int qdev_prop_set_drive(DeviceState *dev, const char *name, BlockDriverState *va
 {
     int res;
 
-    res = bdrv_attach(value, dev);
+    res = bdrv_attach_dev(value, dev);
     if (res < 0) {
         error_report("Can't attach drive %s to %s.%s: %s",
                      bdrv_get_device_name(value),
diff --git a/hw/sd.c b/hw/sd.c
index cedfb20..3fdd5b0 100644
--- a/hw/sd.c
+++ b/hw/sd.c
@@ -451,6 +451,7 @@ SDState *sd_init(BlockDriverState *bs, int is_spi)
     sd->enable = 1;
     sd_reset(sd, bs);
     if (sd->bdrv) {
+        bdrv_attach_dev_nofail(sd->bdrv, sd);
         bdrv_set_change_cb(sd->bdrv, sd_cardchange, sd);
     }
     return sd;
diff --git a/hw/usb-msd.c b/hw/usb-msd.c
index 86582cc..8a82204 100644
--- a/hw/usb-msd.c
+++ b/hw/usb-msd.c
@@ -530,7 +530,7 @@ static int usb_msd_initfn(USBDevice *dev)
      *
      * The hack is probably a bad idea.
      */
-    bdrv_detach(bs, &s->dev.qdev);
+    bdrv_detach_dev(bs, &s->dev.qdev);
     s->conf.bs = NULL;
 
     if (!s->serial) {
diff --git a/hw/xen_disk.c b/hw/xen_disk.c
index 0c298af..7d4144c 100644
--- a/hw/xen_disk.c
+++ b/hw/xen_disk.c
@@ -682,6 +682,7 @@ static int blk_init(struct XenDevice *xendev)
         xen_be_printf(&blkdev->xendev, 2, "get configured bdrv (cmdline setup)\n");
         blkdev->bs = blkdev->dinfo->bdrv;
     }
+    bdrv_attach_dev_nofail(blkdev->bs, blkdev);
     blkdev->file_blk  = BLOCK_SIZE;
     blkdev->file_size = bdrv_getlength(blkdev->bs);
     if (blkdev->file_size < 0) {
-- 
1.7.2.3

  parent reply	other threads:[~2011-07-20 16:24 UTC|newest]

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-20 16:23 [Qemu-devel] [PATCH 00/55] Block layer cleanup & fixes Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 01/55] blockdev: Make eject fail for non-removable drives even with -f Markus Armbruster
2011-07-25 12:27   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 02/55] block: Reset device model callbacks on detach Markus Armbruster
2011-07-25 12:27   ` Christoph Hellwig
2011-07-20 16:23 ` Markus Armbruster [this message]
2011-07-20 16:23 ` [Qemu-devel] [PATCH 04/55] block: Generalize change_cb() to BlockDevOps Markus Armbruster
2011-07-25 12:30   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 05/55] block: Split change_cb() into change_media_cb(), resize_cb() Markus Armbruster
2011-07-25 12:31   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 06/55] block/raw-win32: Drop disabled code for removable host devices Markus Armbruster
2011-07-25 12:32   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 07/55] block: Make BlockDriver method bdrv_set_locked() return void Markus Armbruster
     [not found]   ` <20110721111134.787a83af@doriath>
2011-07-21 15:07     ` Markus Armbruster
2011-07-21 16:34       ` Luiz Capitulino
2011-07-22 14:36       ` Kevin Wolf
2011-07-20 16:23 ` [Qemu-devel] [PATCH 08/55] block: Make BlockDriver method bdrv_eject() " Markus Armbruster
2011-07-22 14:41   ` Kevin Wolf
2011-07-22 15:04     ` Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 09/55] block: Don't let locked flag prevent medium load Markus Armbruster
2011-07-22 14:51   ` Kevin Wolf
2011-07-22 15:33     ` Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 10/55] ide: Update command code definitions as per ACS-2 Table B.2 Markus Armbruster
2011-07-25 12:34   ` Christoph Hellwig
2011-07-25 17:15     ` Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 11/55] ide: Clean up case label indentation in ide_exec_cmd() Markus Armbruster
2011-07-25 12:34   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 12/55] ide: Fix ATA command READ to set ATAPI signature for CD-ROM Markus Armbruster
2011-07-26 11:57   ` Christoph Hellwig
2011-07-26 13:33     ` Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 13/55] ide: Use a table to declare which drive kinds accept each command Markus Armbruster
2011-07-26 11:58   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 14/55] ide: Reject ATA commands specific to drive kinds Markus Armbruster
2011-07-26 11:58   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 15/55] ide/atapi: Clean up misleading name in cmd_start_stop_unit() Markus Armbruster
2011-07-26 11:59   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 16/55] ide/atapi: Track tray open/close state Markus Armbruster
2011-07-26 11:59   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 17/55] ide/atapi: Switch from BlockDriverState's tray_open to own Markus Armbruster
2011-07-26 12:00   ` Christoph Hellwig
2011-07-26 13:36     ` Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 18/55] scsi-disk: Reject CD-specific SCSI commands to disks Markus Armbruster
2011-07-26 12:02   ` Christoph Hellwig
2011-07-26 13:36     ` Markus Armbruster
2011-07-29  8:41       ` Markus Armbruster
2011-07-20 16:23 ` [Qemu-devel] [PATCH 19/55] scsi-disk: Factor out scsi_disk_emulate_start_stop() Markus Armbruster
2011-07-26 12:03   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 20/55] scsi-disk: Track tray open/close state Markus Armbruster
2011-07-26 12:03   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 21/55] block: Revert entanglement of bdrv_is_inserted() with tray status Markus Armbruster
2011-07-26 12:10   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 22/55] block: Drop tray status tracking, no longer used Markus Armbruster
2011-07-26 12:11   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 23/55] block: Show whether the guest ejected the medium in info block Markus Armbruster
     [not found]   ` <20110721112232.28405a1c@doriath>
2011-07-21 15:08     ` Markus Armbruster
2011-07-21 16:38       ` Luiz Capitulino
2011-07-21 17:30         ` Luiz Capitulino
2011-07-20 16:23 ` [Qemu-devel] [PATCH 24/55] ide/atapi: Track tray locked state Markus Armbruster
2011-07-26 12:13   ` Christoph Hellwig
2011-07-20 16:23 ` [Qemu-devel] [PATCH 25/55] ide/atapi: Switch from BlockDriverState's locked to own tray_locked Markus Armbruster
2011-07-26 12:14   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 26/55] scsi-disk: Track tray locked state Markus Armbruster
2011-07-26 12:14   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 27/55] scsi-disk: Switch from BlockDriverState's locked to own tray_locked Markus Armbruster
2011-07-26 12:14   ` Christoph Hellwig
2011-07-26 13:38     ` Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 28/55] block: Leave enforcing tray lock to device models Markus Armbruster
     [not found]   ` <20110721113051.4ea99b04@doriath>
2011-07-21 15:16     ` Markus Armbruster
2011-07-21 16:40       ` Luiz Capitulino
2011-07-20 16:24 ` [Qemu-devel] [PATCH 29/55] block: Drop medium lock tracking, ask device models instead Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 30/55] block: Rename bdrv_set_locked() to bdrv_lock_medium() Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 31/55] ide: Provide IDEDeviceInfo method exit() Markus Armbruster
2011-07-26 12:16   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 32/55] ide/atapi: Don't fail eject when tray is already open Markus Armbruster
2011-07-26 12:16   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 33/55] ide/atapi: Avoid physical/virtual tray state mismatch Markus Armbruster
2011-07-26 12:17   ` Christoph Hellwig
2011-07-26 13:43     ` Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 34/55] scsi-disk: Fix START_STOP to fail when it can't eject Markus Armbruster
2011-07-26 12:17   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 35/55] scsi-disk: Avoid physical/virtual tray state mismatch Markus Armbruster
2011-07-26 12:17   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 36/55] ide: Give vmstate structs internal linkage where possible Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 37/55] ide/atapi: Preserve tray state on migration Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 38/55] scsi-disk: " Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 39/55] block/raw: Fix to forward method bdrv_media_changed() Markus Armbruster
2011-07-26 12:18   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 40/55] block: Leave tracking media change to device models Markus Armbruster
2011-07-26 12:19   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 41/55] fdc: Make media change detection more robust Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 42/55] block: Clean up bdrv_flush_all() Markus Armbruster
2011-07-26 12:19   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 43/55] savevm: Include writable devices with removable media Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 44/55] spitz tosa: Simplify "drive is suitable for microdrive" test Markus Armbruster
2011-07-30  2:24   ` andrzej zaborowski
2011-08-01 12:33     ` Markus Armbruster
2011-08-01 13:04       ` Peter Maydell
2011-08-03  8:12         ` Markus Armbruster
2011-08-03 12:05           ` andrzej zaborowski
2011-08-03 13:28             ` Markus Armbruster
2011-08-03 13:37               ` andrzej zaborowski
2011-08-03 16:38                 ` Markus Armbruster
2011-08-03 17:26                   ` andrzej zaborowski
2011-08-03 18:24                     ` Markus Armbruster
2011-08-03 20:20                       ` andrzej zaborowski
2011-08-04  8:02                         ` Kevin Wolf
2011-08-09  4:32                           ` andrzej zaborowski
2011-08-09  7:32                             ` Kevin Wolf
2011-08-09 11:56                               ` Markus Armbruster
2011-08-09 12:10                                 ` Kevin Wolf
2011-08-09 12:36                                   ` Markus Armbruster
2011-08-09 12:46                                     ` Kevin Wolf
2011-08-04  9:36                         ` Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 45/55] block: Clean up remaining users of "removable" Markus Armbruster
2011-07-21 17:33   ` Luiz Capitulino
2011-07-26 13:03   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 46/55] block: Drop BlockDriverState member removable Markus Armbruster
2011-07-26 13:03   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 47/55] block: Move BlockConf & friends from block_int.h to block.h Markus Armbruster
2011-07-26 13:04   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 48/55] hw: Trim superfluous #include "block_int.h" Markus Armbruster
2011-07-26 13:04   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 49/55] block: Declare qemu_blockalign() in block.h, not block_int.h Markus Armbruster
2011-07-26 13:05   ` Christoph Hellwig
2011-07-26 14:10     ` Markus Armbruster
2011-07-29  8:56     ` Markus Armbruster
2011-07-29 13:11       ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 50/55] block: New bdrv_set_buffer_alignment() Markus Armbruster
2011-07-26 13:06   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 51/55] block: Reset buffer alignment on detach Markus Armbruster
2011-07-26 13:06   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 52/55] block: Move BlockDriverAIOCB & friends from block_int.h to block.h Markus Armbruster
2011-07-26 13:07   ` Christoph Hellwig
2011-07-26 14:11     ` Markus Armbruster
2011-07-20 16:24 ` [Qemu-devel] [PATCH 53/55] nbd: Clean up use of block_int.h Markus Armbruster
2011-07-26 13:07   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 54/55] block: New change_media_cb() parameter load Markus Armbruster
2011-07-26 13:08   ` Christoph Hellwig
2011-07-20 16:24 ` [Qemu-devel] [PATCH 55/55] ide/atapi scsi-disk: Make monitor eject -f, then change work Markus Armbruster
2011-07-26 13:08   ` Christoph Hellwig
2011-07-23  3:15 ` [Qemu-devel] [PATCH 00/55] Block layer cleanup & fixes Amit Shah
2011-07-25 15:33   ` Markus Armbruster
2011-07-26  5:33     ` Amit Shah
2011-07-28  8:12 ` Kevin Wolf
2011-07-28  9:34 ` Amit Shah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1311179069-27882-4-git-send-email-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=amit.shah@redhat.com \
    --cc=dbaryshkov@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefano.stabellini@eu.citrix.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.