- Oct 20, 2014
-
-
Markus Armbruster authored
Make the BlockBackend own the DriveInfo. Change blockdev_init() to return the BlockBackend instead of the DriveInfo. Signed-off-by:
Markus Armbruster <armbru@redhat.com> Reviewed-by:
Max Reitz <mreitz@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Markus Armbruster authored
Convenience function blk_new_with_bs() creates a BlockBackend with its BlockDriverState. Callers have to unref both. The commit after next will relieve them of the need to unref the BlockDriverState. Complication: due to the silly way drive_del works, we need a way to hide a BlockBackend, just like bdrv_make_anon(). To emphasize its "special" status, give the function a suitably off-putting name: blk_hide_on_behalf_of_do_drive_del(). Unfortunately, hiding turns the BlockBackend's name into the empty string. Can't avoid that without breaking the blk->bs->device_name equals blk->name invariant. Signed-off-by:
Markus Armbruster <armbru@redhat.com> Reviewed-by:
Max Reitz <mreitz@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Markus Armbruster authored
A block device consists of a frontend device model and a backend. A block backend has a tree of block drivers doing the actual work. The tree is managed by the block layer. We currently use a single abstraction BlockDriverState both for tree nodes and the backend as a whole. Drawbacks: * Its API includes both stuff that makes sense only at the block backend level (root of the tree) and stuff that's only for use within the block layer. This makes the API bigger and more complex than necessary. Moreover, it's not obvious which interfaces are meant for device models, and which really aren't. * Since device models keep a reference to their backend, the backend object can't just be destroyed. But for media change, we need to replace the tree. Our solution is to make the BlockDriverState generic, with actual driver state in a separate object, pointed to by member opaque. That lets us replace the tree by deinitializing and reinitializing its root. This special need of the root makes the data structure awkward everywhere in the tree. The general plan is to separate the APIs into "block backend", for use by device models, monitor and whatever other code dealing with block backends, and "block driver", for use by the block layer and whatever other code (if any) dealing with trees and tree nodes. Code dealing with block backends, device models in particular, should become completely oblivious of BlockDriverState. This should let us clean up both APIs, and the tree data structures. This commit is a first step. It creates a minimal "block backend" API: type BlockBackend and functions to create, destroy and find them. BlockBackend objects are created and destroyed exactly when root BlockDriverState objects are created and destroyed. "Root" in the sense of "in bdrv_states". They're not yet used for anything; that'll come shortly. A root BlockDriverState is created with bdrv_new_root(), so where to create a BlockBackend is obvious. Where these roots get destroyed isn't always as obvious. It is obvious in qemu-img.c, qemu-io.c and qemu-nbd.c, and in error paths of blockdev_init(), blk_connect(). That leaves destruction of objects successfully created by blockdev_init() and blk_connect(). blockdev_init() is used only by drive_new() and qmp_blockdev_add(). Objects created by the latter are currently indestructible (see commit 48f364dd "blockdev: Refuse to drive_del something added with blockdev-add" and commit 2d246f01 "blockdev: Introduce DriveInfo.enable_auto_del"). Objects created by the former get destroyed by drive_del(). Objects created by blk_connect() get destroyed by blk_disconnect(). BlockBackend is reference-counted. Its reference count never exceeds one so far, but that's going to change. In drive_del(), the BB's reference count is surely one now. The BDS's reference count is greater than one when something else is holding a reference, such as a block job. In this case, the BB is destroyed right away, but the BDS lives on until all extra references get dropped. Signed-off-by:
Markus Armbruster <armbru@redhat.com> Reviewed-by:
Max Reitz <mreitz@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Markus Armbruster authored
Creating an anonymous BDS can't fail. Make that obvious. Signed-off-by:
Markus Armbruster <armbru@redhat.com> Reviewed-by:
Max Reitz <mreitz@redhat.com> Reviewed-by:
Benoît Canet <benoit.canet@nodalink.com> Reviewed-by:
Kevin Wolf <kwolf@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Hanna Reitz authored
Export names may be used with nbd+unix, too, fix nbd_refresh_filename() accordingly. Also, for nbd+tcp, the documented path schema is "nbd://host[:port]/export ", so use it. Furthermore, as can be seen from that schema, the port is optional. That makes six single cases for how the filename can be formatted; it is not easy to generalize these cases without the resulting statement being completely unreadable, thus there is simply one snprintf() per case. Finally, taking the options from BDRVNBDState::socket_opts is wrong, because those will not contain the export name. Just use BlockDriverState::options instead. Reported-by:
Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by:
Max Reitz <mreitz@redhat.com> Reviewed-by:
Paolo Bonzini <pbonzini@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Tony Breeds authored
try_fiemap() uses FIEMAP_FLAG_SYNC which has a significant performance impact. Prefer seek_hole() over fiemap() to avoid this impact where possible. seek_hole is more widely used and, arguably, has potential to be optimised in the kernel. Reported-By:
Michael Steffens <michael_steffens@posteo.de> Signed-off-by:
Tony Breeds <tony@bakeyournoodle.com> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Markus Armbruster <armbru@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Cc: Max Reitz <mreitz@redhat.com> Cc: Pádraig Brady <pbrady@redhat.com> Cc: Eric Blake <eblake@redhat.com> Reviewed-by:
Eric Blake <eblake@redhat.com> Reviewed-by:
Max Reitz <mreitz@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Tony Breeds authored
Using fiemap without FIEMAP_FLAG_SYNC is a known corrupter. Add the FIEMAP_FLAG_SYNC flag to the FS_IOC_FIEMAP ioctl. This has the downside of significantly reducing performance. Reported-By:
Michael Steffens <michael_steffens@posteo.de> Signed-off-by:
Tony Breeds <tony@bakeyournoodle.com> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Markus Armbruster <armbru@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Cc: Max Reitz <mreitz@redhat.com> Cc: Pádraig Brady <pbrady@redhat.com> Cc: Eric Blake <eblake@redhat.com> Reviewed-by:
Eric Blake <eblake@redhat.com> Reviewed-by:
Max Reitz <mreitz@redhat.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
Zhang Haoyu authored
When the Qcow2DiscardRegion is adjacent to another one referenced by "d", free this Qcow2DiscardRegion metadata referenced by "p" after it was removed from s->discards queue. Signed-off-by:
Zhang Haoyu <zhanghy@sangfor.com> Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
-
- Oct 16, 2014
-
-
Gonglei (Arei) authored
This patch fixes compilation errors when building against glib < 2.16.0 due to the missing g_strcmp0() function. Suggested-by:
Peter Maydell <peter.maydell@linaro.org> Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Message-id: 1413457177-10132-1-git-send-email-arei.gonglei@huawei.com Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
Peter Maydell authored
vga-pci: add qext region to mmio vga: Remove unused arrays dmask4 and dmask16 # gpg: Signature made Wed 15 Oct 2014 10:12:06 BST using RSA key ID D3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" * remotes/kraxel/tags/pull-vga-20141015-1: hw/display/vga: Remove unused arrays dmask4 and dmask16 vga-pci: add qext region to mmio Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
Peter Maydell authored
allow changing bootorder via monitor at runtime, by making bootindex a writable qom property. * remotes/kraxel/tags/pull-bootindex-20141015-1: (34 commits) bootindex: change fprintf to error_report bootindex: delete bootindex when device is removed bootindex: move calling add_boot_device_patch to bootindex setter function ide: add calling add_boot_device_patch in bootindex setter function nvma: ide: add bootindex to qom property usb-storage: add bootindex to qom property virtio-blk: alias bootindex property explicitly for virt-blk-pci/ccw/s390 block: remove bootindex property from qdev to qom virtio-blk: add bootindex to qom property ide: add bootindex to qom property scsi: add bootindex to qom property isa-fdc: remove bootindexA/B property from qdev to qom redirect: remove bootindex property from qdev to qom vfio: remove bootindex property from qdev to qom pci-assign: remove bootindex property from qdev to qom host-libusb: remove bootindex property from qdev to qom virtio-net: alias bootindex property explicitly for virt-net-pci/ccw/s390 net: remove bootindex property from qdev to qom usb-net: add bootindex to qom property vmxnet3: add bootindex to qom property ... Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
- Oct 15, 2014
-
-
Stefan Hajnoczi authored
This patch fixes compilation errors when building against glib <2.28.0 due to the missing g_get_monotonic_time() function. The compilation error in tests/libqos/virtio.c was introduced in commit 70556264 ("libqos: use microseconds instead of iterations for virtio timeout"). Add a simple g_get_monotonic_time() implementation to glib-compat.h based on code from vhost-user-test.c. Signed-off-by:
Stefan Hajnoczi <stefanha@redhat.com> [Igor: add G_TIME_SPAN_SECOND, include glib-compat.h in libqtest.h] Signed-off-by:
Igor Mammedov <imammedo@redhat.com> Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
Peter Maydell authored
migration/next for 20141015 # gpg: Signature made Wed 15 Oct 2014 09:21:54 BST using RSA key ID 5872D723 # gpg: Can't check signature: public key not found * remotes/juanquintela/tags/migration/20141015: migration: catch unknown flag combinations in ram_load qemu-file: Move stdio implementation to qemu-file-stdio.c qemu-file: Move unix and socket implementations to qemu-file-unix.c qemu-file: Use qemu_file_is_writable() on stdio_fclose() qemu-file: Make qemu_file_is_writable() non-static qemu-file: Add copyright header to qemu-file.c vmstate: Allow dynamic allocation for VBUFFER during migration block/migration: Disable cache invalidate for incoming migration Tests: QEMUSizedBuffer/QEMUBuffer QEMUSizedBuffer based QEMUFile Signed-off-by:
Peter Maydell <peter.maydell@linaro.org>
-
Peter Maydell authored
Following cleanup of the vga device code in commit d2e043a8, the arrays dmask4 and dmask16 are now unused. gcc doesn't warn about this, but clang does; remove them. Signed-off-by:
Peter Maydell <peter.maydell@linaro.org> Reviewed-by:
David Gibson <david@gibson.dropbear.id.au> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gerd Hoffmann authored
Add a qemu extented register range to the standard vga mmio bar. Right nowe there are two registers: One readonly register returning the size of the region (so we can easily add more registers there if needed) and one endian control register, so guests (especially ppc) can flip the framebuffer endianness as they need it. Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com> Reviewed-by:
David Gibson <david@gibson.dropbear.id.au>
-
Gonglei (Arei) authored
The function may be called by qmp command, we should report error message to the caller. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Device should be removed from global boot list when it is hot-unplugged. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
On this way, we can assure the new bootindex take effect during vm rebooting. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
On this way, we can assure the new bootindex take effect during vm rebooting. Meanwhile set the initial value of bootindex to -1. Because ide devcies's unit property maybe do not initialize when set_bootindex function is called, so that we don't know its suffix. So we have to save the call add_boot_device_path() on ide realize/init function. When we want to change bootindex during vm rebooting, we can call it in setter function. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
At present, nvma cannot boot. However, it provides already a bootindex property, so change bootindex to qom for nvma device, but not call add_boot_device_path. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Because usb-storage rely on scsi-disk which is created in usb_msg_realize_storage(), so we should store the SCSIDevice pointer in MSDState struct. Only in this way, we can change the global boot_order_list when we want to change the bootindex during vm rebooting by calling object_property_set_int(Object(SCSIDevice),). Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Since the "bootindex" property is a QOM property and not a qdev property now, we must alias it explicitly for virtio-blk-pci, as well as CCW and s390-virtio. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindex form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindexA/B form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindex form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindex form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindex form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindex form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Since the "bootindex" property is a QOM property and not a qdev property now, we must alias it explicitly for virtio-net-pci, as well as CCW and s390-virtio. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Remove bootindex form qdev property to qom, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. At present, isa_ne2000 device does not support to boot os, so we register two seprate qom getter/setter functions. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-
Gonglei (Arei) authored
Add a qom property with the same name 'bootindex', when we remove it form qdev property, things will continue to work just fine, and we can use qom features which are not supported by qdev property. Signed-off-by:
Gonglei <arei.gonglei@huawei.com> Reviewed-by:
Gerd Hoffmann <kraxel@redhat.com> Signed-off-by:
Gerd Hoffmann <kraxel@redhat.com>
-