* [Qemu-devel] [PULL 00/10] Block patches
@ 2010-08-30 16:32 Kevin Wolf
2010-09-06 15:07 ` Kevin Wolf
0 siblings, 1 reply; 26+ messages in thread
From: Kevin Wolf @ 2010-08-30 16:32 UTC (permalink / raw)
To: anthony; +Cc: kwolf, qemu-devel
The following changes since commit 02a89b219039621c940863aa5a9da4fec81a1546:
isapc: fix segfault. (2010-08-28 08:50:40 +0000)
are available in the git repository at:
git://repo.or.cz/qemu/kevin.git for-anthony
Andrew de Quincey (1):
posix-aio-compat: Fix async_conmtext for ioctl
Izumi Tsutsui (1):
sheepdog: remove unnecessary includes
Kevin Wolf (4):
virtio: Factor virtqueue_map_sg out
virtio-blk: Fix migration of queued requests
block: Fix image re-open in bdrv_commit
qemu-img rebase: Open new backing file read-only
Laurent Vivier (1):
nbd: Introduce NBD named exports.
Loïc Minier (1):
vvfat: fat_chksum(): fix access above array bounds
Miguel Di Ciurcio Filho (2):
monitor: make 'info snapshots' show only fully available snapshots
savevm: Generate a name when run without one
block.c | 13 ++++--
block/nbd.c | 68 +++++++++++++++++++++--------
block/sheepdog.c | 10 ----
block/vvfat.c | 2 +-
hw/virtio-blk.c | 5 ++
hw/virtio.c | 38 +++++++++++------
hw/virtio.h | 3 +
nbd.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++-----
nbd.h | 5 ++-
posix-aio-compat.c | 1 +
qemu-doc.texi | 7 +++
qemu-img.c | 2 +-
qemu-nbd.c | 4 +-
savevm.c | 88 ++++++++++++++++++++++++++++-----------
14 files changed, 276 insertions(+), 88 deletions(-)
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2010-08-30 16:32 Kevin Wolf
@ 2010-09-06 15:07 ` Kevin Wolf
0 siblings, 0 replies; 26+ messages in thread
From: Kevin Wolf @ 2010-09-06 15:07 UTC (permalink / raw)
To: Kevin Wolf; +Cc: qemu-devel
Am 30.08.2010 18:32, schrieb Kevin Wolf:
> The following changes since commit 02a89b219039621c940863aa5a9da4fec81a1546:
>
> isapc: fix segfault. (2010-08-28 08:50:40 +0000)
>
> are available in the git repository at:
> git://repo.or.cz/qemu/kevin.git for-anthony
>
> Andrew de Quincey (1):
> posix-aio-compat: Fix async_conmtext for ioctl
>
> Izumi Tsutsui (1):
> sheepdog: remove unnecessary includes
>
> Kevin Wolf (4):
> virtio: Factor virtqueue_map_sg out
> virtio-blk: Fix migration of queued requests
> block: Fix image re-open in bdrv_commit
> qemu-img rebase: Open new backing file read-only
>
> Laurent Vivier (1):
> nbd: Introduce NBD named exports.
>
> Loïc Minier (1):
> vvfat: fat_chksum(): fix access above array bounds
>
> Miguel Di Ciurcio Filho (2):
> monitor: make 'info snapshots' show only fully available snapshots
> savevm: Generate a name when run without one
Anthony, I think you already pulled the patches for stable-0.13 that I
sent on the same day, but these patches for master still seem to be missing.
Kevin
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2010-11-04 13:15 Kevin Wolf
0 siblings, 0 replies; 26+ messages in thread
From: Kevin Wolf @ 2010-11-04 13:15 UTC (permalink / raw)
To: anthony; +Cc: kwolf, qemu-devel
The following changes since commit 5fc9cfedfa09199e10b5f9b67dcd286bfeae4f7a:
Fold send_all() wrapper unix_write() into one function (2010-11-03 12:48:09 -0500)
are available in the git repository at:
git://repo.or.cz/qemu/kevin.git for-anthony
Blue Swirl (1):
block: avoid a warning on 64 bit hosts with long as int64_t
Kevin Wolf (9):
scsi-disk: Implement rerror option
block: Allow bdrv_flush to return errors
scsi-disk: Complete failed requests in scsi_disk_emulate_command
scsi-disk: Implement werror for flushes
vpc: Implement bdrv_flush
qcow2: Invalidate cache after failed read
ide: Handle immediate bdrv_aio_flush failure
virtio-blk: Handle immediate flush failure properly
scsi-disk: Fix immediate failure of bdrv_aio_*
block.c | 21 ++++++-
block.h | 2 +-
block/blkdebug.c | 4 +-
block/blkverify.c | 8 +-
block/cow.c | 4 +-
block/qcow.c | 4 +-
block/qcow2-cluster.c | 1 +
block/qcow2-refcount.c | 1 +
block/qcow2.c | 4 +-
block/raw-posix.c | 4 +-
block/raw-win32.c | 9 +++-
block/raw.c | 4 +-
block/vdi.c | 4 +-
block/vmdk.c | 4 +-
block/vpc.c | 21 ++++---
block_int.h | 2 +-
blockdev.c | 6 +-
hw/ide/core.c | 12 +++-
hw/scsi-disk.c | 147 +++++++++++++++++++++++++++++++----------------
hw/virtio-blk.c | 2 +-
20 files changed, 172 insertions(+), 92 deletions(-)
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2011-04-13 12:05 Kevin Wolf
0 siblings, 0 replies; 26+ messages in thread
From: Kevin Wolf @ 2011-04-13 12:05 UTC (permalink / raw)
To: anthony; +Cc: kwolf, qemu-devel
The following changes since commit 9df38c47d01eb1fd7eb9d60ac70a4170e638b4a2:
target-arm: Detect tininess before rounding for FP operations (2011-04-12 23:33:33 +0200)
are available in the git repository at:
git://repo.or.cz/qemu/kevin.git for-anthony
Amit Shah (7):
atapi: Drives can be locked without media present
atapi: Report correct errors on guest eject request
atapi: Allow GET_EVENT_STATUS_NOTIFICATION after media change
atapi: Move GET_EVENT_STATUS_NOTIFICATION command handling to its own function
atapi: GESN: Use structs for commonly-used field types
atapi: GESN: Standardise event response handling for future additions
atapi: GESN: implement 'media' subcommand
Anthony Liguori (1):
qed: Add support for zero clusters
Mitnick Lyu (1):
vpc.c: Use get_option_parameter() does the search
Stefan Hajnoczi (1):
docs: Describe zero data clusters in QED specification
block/qed-check.c | 5 +-
block/qed-cluster.c | 31 +++++---
block/qed.c | 21 ++++-
block/qed.h | 26 ++++++
block/vpc.c | 8 +--
docs/specs/qed_spec.txt | 8 ++
hw/ide/core.c | 204 ++++++++++++++++++++++++++++++++++++++++-------
hw/ide/internal.h | 6 ++
8 files changed, 258 insertions(+), 51 deletions(-)
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2012-08-15 13:56 Kevin Wolf
2012-08-15 19:49 ` Anthony Liguori
0 siblings, 1 reply; 26+ messages in thread
From: Kevin Wolf @ 2012-08-15 13:56 UTC (permalink / raw)
To: anthony; +Cc: kwolf, qemu-devel
The following changes since commit 03834e22abafbc8dc4052d46a5ccd6dd135a54a3:
Merge remote-tracking branch 'origin/master' into staging (2012-08-14 15:19:50 -0500)
are available in the git repository at:
http://repo.or.cz/r/qemu/kevin.git for-anthony
Corey Bryant (7):
qemu-char: Add MSG_CMSG_CLOEXEC flag to recvmsg
qapi: Introduce add-fd, remove-fd, query-fdsets
block: Prevent detection of /dev/fdset/ as floppy
block: Convert open calls to qemu_open
block: Convert close calls to qemu_close
block: Enable qemu_open/close to work with fd sets
monitor: Clean up fd sets on monitor disconnect
Kevin Wolf (2):
block: Flush parent to OS with cache=unsafe
qemu-iotests: Fix 030 after switch to GenericError
Stefan Priebe (1):
iscsi: Fix NULL dereferences / races between task completion and abort
Makefile | 6 +-
block.c | 3 +-
block/iscsi.c | 55 ++++-----
block/raw-posix.c | 46 ++++----
block/raw-win32.c | 6 +-
block/vdi.c | 5 +-
block/vmdk.c | 25 ++---
block/vpc.c | 4 +-
block/vvfat.c | 16 ++--
cutils.c | 5 +
monitor.c | 294 ++++++++++++++++++++++++++++++++++++++++++++++++
monitor.h | 5 +
osdep.c | 116 +++++++++++++++++++
qapi-schema.json | 98 ++++++++++++++++
qemu-char.c | 12 ++-
qemu-common.h | 2 +
qemu-tool.c | 20 ++++
qemu-user.c | 20 ++++
qmp-commands.hx | 122 ++++++++++++++++++++
savevm.c | 4 +-
tests/Makefile | 2 +-
tests/qemu-iotests/030 | 6 +-
22 files changed, 776 insertions(+), 96 deletions(-)
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2012-08-15 13:56 Kevin Wolf
@ 2012-08-15 19:49 ` Anthony Liguori
0 siblings, 0 replies; 26+ messages in thread
From: Anthony Liguori @ 2012-08-15 19:49 UTC (permalink / raw)
To: Kevin Wolf; +Cc: qemu-devel
Kevin Wolf <kwolf@redhat.com> writes:
> The following changes since commit 03834e22abafbc8dc4052d46a5ccd6dd135a54a3:
>
> Merge remote-tracking branch 'origin/master' into staging (2012-08-14 15:19:50 -0500)
>
> are available in the git repository at:
>
> http://repo.or.cz/r/qemu/kevin.git for-anthony
>
Pulled. Thanks.
Regards,
Anthony Liguori
> Corey Bryant (7):
> qemu-char: Add MSG_CMSG_CLOEXEC flag to recvmsg
> qapi: Introduce add-fd, remove-fd, query-fdsets
> block: Prevent detection of /dev/fdset/ as floppy
> block: Convert open calls to qemu_open
> block: Convert close calls to qemu_close
> block: Enable qemu_open/close to work with fd sets
> monitor: Clean up fd sets on monitor disconnect
>
> Kevin Wolf (2):
> block: Flush parent to OS with cache=unsafe
> qemu-iotests: Fix 030 after switch to GenericError
>
> Stefan Priebe (1):
> iscsi: Fix NULL dereferences / races between task completion and abort
>
> Makefile | 6 +-
> block.c | 3 +-
> block/iscsi.c | 55 ++++-----
> block/raw-posix.c | 46 ++++----
> block/raw-win32.c | 6 +-
> block/vdi.c | 5 +-
> block/vmdk.c | 25 ++---
> block/vpc.c | 4 +-
> block/vvfat.c | 16 ++--
> cutils.c | 5 +
> monitor.c | 294 ++++++++++++++++++++++++++++++++++++++++++++++++
> monitor.h | 5 +
> osdep.c | 116 +++++++++++++++++++
> qapi-schema.json | 98 ++++++++++++++++
> qemu-char.c | 12 ++-
> qemu-common.h | 2 +
> qemu-tool.c | 20 ++++
> qemu-user.c | 20 ++++
> qmp-commands.hx | 122 ++++++++++++++++++++
> savevm.c | 4 +-
> tests/Makefile | 2 +-
> tests/qemu-iotests/030 | 6 +-
> 22 files changed, 776 insertions(+), 96 deletions(-)
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2013-06-04 12:45 Kevin Wolf
2013-06-17 21:17 ` Anthony Liguori
0 siblings, 1 reply; 26+ messages in thread
From: Kevin Wolf @ 2013-06-04 12:45 UTC (permalink / raw)
To: anthony; +Cc: kwolf, qemu-devel
The following changes since commit 171392406d8e230d62e5ebf4805f71460854b8ec:
gtk: don't use g_object_unref on GdkCursor (2013-06-03 16:14:05 -0500)
are available in the git repository at:
git://repo.or.cz/qemu/kevin.git for-anthony
for you to fetch changes up to 5b91704469c0f801e0219f26458356872c4145ab:
block: dump snapshot and image info to specified output (2013-06-04 13:56:30 +0200)
----------------------------------------------------------------
Fam Zheng (1):
block: add block driver read only whitelist
Stefan Hajnoczi (6):
qemu-iotests: fix 054 cluster size help output
qemu-iotests: make assert_no_active_block_jobs() common
qemu-iotests: make cancel_and_wait() common
qemu-iotests: make compare_images() common
qemu-iotests: make create_image() common
block: drop bs_snapshots global variable
Wenchao Xia (3):
block: move snapshot code in block.c to block/snapshot.c
block: move qmp and info dump related code to block/qapi.c
block: dump snapshot and image info to specified output
block.c | 356 ++++------------------------------------
block/Makefile.objs | 1 +
block/qapi.c | 366 ++++++++++++++++++++++++++++++++++++++++++
block/snapshot.c | 157 ++++++++++++++++++
blockdev.c | 4 +-
configure | 20 ++-
hw/block/xen_disk.c | 8 +-
include/block/block.h | 31 +---
include/block/block_int.h | 1 +
include/block/qapi.h | 43 +++++
include/block/snapshot.h | 53 ++++++
qemu-img.c | 163 +------------------
savevm.c | 40 ++---
scripts/create_config | 11 +-
tests/qemu-iotests/030 | 99 ++++--------
tests/qemu-iotests/041 | 181 ++++++++-------------
tests/qemu-iotests/054.out | 2 +-
tests/qemu-iotests/iotests.py | 38 +++++
18 files changed, 843 insertions(+), 731 deletions(-)
create mode 100644 block/qapi.c
create mode 100644 block/snapshot.c
create mode 100644 include/block/qapi.h
create mode 100644 include/block/snapshot.h
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2013-06-04 12:45 Kevin Wolf
@ 2013-06-17 21:17 ` Anthony Liguori
0 siblings, 0 replies; 26+ messages in thread
From: Anthony Liguori @ 2013-06-17 21:17 UTC (permalink / raw)
To: Kevin Wolf, anthony; +Cc: qemu-devel
Pulled. Thanks.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2015-06-12 14:57 Stefan Hajnoczi
2015-06-15 9:42 ` Peter Maydell
0 siblings, 1 reply; 26+ messages in thread
From: Stefan Hajnoczi @ 2015-06-12 14:57 UTC (permalink / raw)
To: qemu-devel; +Cc: Kevin Wolf, Peter Maydell, Stefan Hajnoczi
The following changes since commit d8e3b729cf452d2689c8669f1ec18158db29fd5a:
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (2015-06-11 15:33:38 +0100)
are available in the git repository at:
git://github.com/stefanha/qemu.git tags/block-pull-request
for you to fetch changes up to 2db33f88d2b340c049c576ad75d442e4b6ffe768:
qemu-iotests: expand test 093 to support group throttling (2015-06-12 14:00:00 +0100)
----------------------------------------------------------------
----------------------------------------------------------------
Alberto Garcia (7):
throttle: Add throttle group infrastructure
throttle: Add throttle group infrastructure tests
throttle: Add throttle group support
throttle: acquire the ThrottleGroup lock in bdrv_swap()
throttle: add the name of the ThrottleGroup to BlockDeviceInfo
throttle: Update throttle infrastructure copyright
qemu-iotests: expand test 093 to support group throttling
Benoît Canet (1):
throttle: Extract timers from ThrottleState into a separate structure
Kevin Wolf (1):
raw-posix: Fix .bdrv_co_get_block_status() for unaligned image size
Stefan Hajnoczi (1):
Revert "iothread: release iothread around aio_poll"
async.c | 8 +-
block.c | 38 ++-
block/Makefile.objs | 1 +
block/io.c | 71 ++----
block/qapi.c | 8 +-
block/raw-posix.c | 5 +-
block/throttle-groups.c | 496 ++++++++++++++++++++++++++++++++++++++++
blockdev.c | 38 ++-
hmp.c | 10 +-
include/block/block.h | 3 +-
include/block/block_int.h | 7 +-
include/block/throttle-groups.h | 46 ++++
include/qemu/throttle.h | 46 ++--
iothread.c | 11 +-
qapi/block-core.json | 29 ++-
qemu-options.hx | 1 +
qmp-commands.hx | 3 +-
tests/qemu-iotests/093 | 89 ++++---
tests/test-aio.c | 19 +-
tests/test-throttle.c | 163 +++++++++----
util/throttle.c | 81 ++++---
21 files changed, 954 insertions(+), 219 deletions(-)
create mode 100644 block/throttle-groups.c
create mode 100644 include/block/throttle-groups.h
--
2.4.2
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2015-06-12 14:57 Stefan Hajnoczi
@ 2015-06-15 9:42 ` Peter Maydell
0 siblings, 0 replies; 26+ messages in thread
From: Peter Maydell @ 2015-06-15 9:42 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: Kevin Wolf, QEMU Developers
On 12 June 2015 at 15:57, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit d8e3b729cf452d2689c8669f1ec18158db29fd5a:
>
> Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (2015-06-11 15:33:38 +0100)
>
> are available in the git repository at:
>
> git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 2db33f88d2b340c049c576ad75d442e4b6ffe768:
>
> qemu-iotests: expand test 093 to support group throttling (2015-06-12 14:00:00 +0100)
>
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2015-12-22 8:54 Stefan Hajnoczi
2015-12-22 14:47 ` Peter Maydell
0 siblings, 1 reply; 26+ messages in thread
From: Stefan Hajnoczi @ 2015-12-22 8:54 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi
The following changes since commit c688084506cf2cf2eba4ba9df4e91abb6e3dab83:
Merge remote-tracking branch 'remotes/berrange/tags/pull-qcrypto-secrets-base-2015-12-18-1' into staging (2015-12-18 17:04:15 +0000)
are available in the git repository at:
git://github.com/stefanha/qemu.git tags/block-pull-request
for you to fetch changes up to 723697551a7e926abe7d3c7f2966012b8075143d:
sdhci: add optional quirk property to disable card insertion/removal interrupts (2015-12-22 16:34:26 +0800)
----------------------------------------------------------------
----------------------------------------------------------------
Andrew Baumann (2):
sdhci: don't raise a command index error for an unexpected response
sdhci: add optional quirk property to disable card insertion/removal
interrupts
Gonglei (1):
virtio-blk: trivial code optimization
Peter Crosthwaite (1):
sd: sdhci: Delete over-zealous power check
Stefan Hajnoczi (4):
block: add BlockLimits.max_iov field
block-backend: add blk_get_max_iov()
block: replace IOV_MAX with BlockLimits.max_iov
block/mirror: replace IOV_MAX with blk_get_max_iov()
Vladimir Sementsov-Ogievskiy (1):
parallels: add format spec
Yang Wei (1):
scripts/gdb: Fix a python exception in mtree.py
MAINTAINERS | 1 +
block/block-backend.c | 5 +
block/io.c | 10 +-
block/mirror.c | 6 +-
docs/specs/parallels.txt | 228 +++++++++++++++++++++++++++++++++++++++++
hw/block/virtio-blk.c | 28 ++---
hw/sd/sdhci.c | 10 +-
include/block/block_int.h | 3 +
include/hw/sd/sdhci.h | 1 +
include/sysemu/block-backend.h | 1 +
scripts/qemugdb/mtree.py | 10 +-
11 files changed, 272 insertions(+), 31 deletions(-)
create mode 100644 docs/specs/parallels.txt
--
2.5.0
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2015-12-22 8:54 Stefan Hajnoczi
@ 2015-12-22 14:47 ` Peter Maydell
0 siblings, 0 replies; 26+ messages in thread
From: Peter Maydell @ 2015-12-22 14:47 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: QEMU Developers
On 22 December 2015 at 08:54, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit c688084506cf2cf2eba4ba9df4e91abb6e3dab83:
>
> Merge remote-tracking branch 'remotes/berrange/tags/pull-qcrypto-secrets-base-2015-12-18-1' into staging (2015-12-18 17:04:15 +0000)
>
> are available in the git repository at:
>
> git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 723697551a7e926abe7d3c7f2966012b8075143d:
>
> sdhci: add optional quirk property to disable card insertion/removal interrupts (2015-12-22 16:34:26 +0800)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------
>
> Andrew Baumann (2):
> sdhci: don't raise a command index error for an unexpected response
> sdhci: add optional quirk property to disable card insertion/removal
> interrupts
>
> Gonglei (1):
> virtio-blk: trivial code optimization
>
> Peter Crosthwaite (1):
> sd: sdhci: Delete over-zealous power check
>
> Stefan Hajnoczi (4):
> block: add BlockLimits.max_iov field
> block-backend: add blk_get_max_iov()
> block: replace IOV_MAX with BlockLimits.max_iov
> block/mirror: replace IOV_MAX with blk_get_max_iov()
>
> Vladimir Sementsov-Ogievskiy (1):
> parallels: add format spec
>
> Yang Wei (1):
> scripts/gdb: Fix a python exception in mtree.py
>
> MAINTAINERS | 1 +
> block/block-backend.c | 5 +
> block/io.c | 10 +-
> block/mirror.c | 6 +-
> docs/specs/parallels.txt | 228 +++++++++++++++++++++++++++++++++++++++++
> hw/block/virtio-blk.c | 28 ++---
> hw/sd/sdhci.c | 10 +-
> include/block/block_int.h | 3 +
> include/hw/sd/sdhci.h | 1 +
> include/sysemu/block-backend.h | 1 +
> scripts/qemugdb/mtree.py | 10 +-
> 11 files changed, 272 insertions(+), 31 deletions(-)
> create mode 100644 docs/specs/parallels.txt
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2016-06-29 3:10 Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 01/10] block/gluster: add support for SEEK_DATA/SEEK_HOLE Jeff Cody
` (10 more replies)
0 siblings, 11 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
The following changes since commit d7f30403576f04f1f3a5fb5a1d18cba8dfa7a6d2:
cputlb: don't cpu_abort() if guest tries to execute outside RAM or RAM (2016-06-28 18:50:53 +0100)
are available in the git repository at:
git@github.com:codyprime/qemu-kvm-jtc.git tags/block-pull-request
for you to fetch changes up to 15d6729850728ee49859711dd40b00d8d85d94ee:
mirror: fix misleading comments (2016-06-28 23:08:25 -0400)
----------------------------------------------------------------
----------------------------------------------------------------
Changlong Xie (2):
blockjob: assert(cb) when create job
mirror: fix misleading comments
Denis V. Lunev (1):
mirror: fix trace_mirror_yield_in_flight usage in mirror_iteration()
Jeff Cody (1):
block/gluster: add support for selecting debug logging level
John Snow (3):
mirror: clarify mirror_do_read return code
mirror: limit niov to IOV_MAX elements, again
iotests: add small-granularity mirror test
Niels de Vos (1):
block/gluster: add support for SEEK_DATA/SEEK_HOLE
Peter Lieven (2):
block/nfs: refuse readahead if cache.direct is on
block/nfs: add support for libnfs pagecache
block/backup.c | 1 -
block/gluster.c | 230 +++++++++++++++++++++++++++++++++++++++++++--
block/mirror.c | 14 ++-
block/nfs.c | 55 ++++++++++-
blockjob.c | 1 +
tests/qemu-iotests/041 | 30 ++++++
tests/qemu-iotests/041.out | 4 +-
7 files changed, 317 insertions(+), 18 deletions(-)
--
1.9.3
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 01/10] block/gluster: add support for SEEK_DATA/SEEK_HOLE
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 02/10] block/nfs: refuse readahead if cache.direct is on Jeff Cody
` (9 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: Niels de Vos <ndevos@redhat.com>
GlusterFS 3.8 contains support for SEEK_DATA and SEEK_HOLE. This makes
it possible to detect sparse areas in files.
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
---
block/gluster.c | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 182 insertions(+)
diff --git a/block/gluster.c b/block/gluster.c
index d361d8e..38fce9e 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -24,6 +24,7 @@ typedef struct GlusterAIOCB {
typedef struct BDRVGlusterState {
struct glfs *glfs;
struct glfs_fd *fd;
+ bool supports_seek_data;
} BDRVGlusterState;
typedef struct GlusterConf {
@@ -287,6 +288,28 @@ static void qemu_gluster_parse_flags(int bdrv_flags, int *open_flags)
}
}
+/*
+ * Do SEEK_DATA/HOLE to detect if it is functional. Older broken versions of
+ * gfapi incorrectly return the current offset when SEEK_DATA/HOLE is used.
+ * - Corrected versions return -1 and set errno to EINVAL.
+ * - Versions that support SEEK_DATA/HOLE correctly, will return -1 and set
+ * errno to ENXIO when SEEK_DATA is called with a position of EOF.
+ */
+static bool qemu_gluster_test_seek(struct glfs_fd *fd)
+{
+ off_t ret, eof;
+
+ eof = glfs_lseek(fd, 0, SEEK_END);
+ if (eof < 0) {
+ /* this should never occur */
+ return false;
+ }
+
+ /* this should always fail with ENXIO if SEEK_DATA is supported */
+ ret = glfs_lseek(fd, eof, SEEK_DATA);
+ return (ret < 0) && (errno == ENXIO);
+}
+
static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
int bdrv_flags, Error **errp)
{
@@ -338,6 +361,8 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
ret = -errno;
}
+ s->supports_seek_data = qemu_gluster_test_seek(s->fd);
+
out:
qemu_opts_del(opts);
qemu_gluster_gconf_free(gconf);
@@ -727,6 +752,159 @@ static int qemu_gluster_has_zero_init(BlockDriverState *bs)
return 0;
}
+/*
+ * Find allocation range in @bs around offset @start.
+ * May change underlying file descriptor's file offset.
+ * If @start is not in a hole, store @start in @data, and the
+ * beginning of the next hole in @hole, and return 0.
+ * If @start is in a non-trailing hole, store @start in @hole and the
+ * beginning of the next non-hole in @data, and return 0.
+ * If @start is in a trailing hole or beyond EOF, return -ENXIO.
+ * If we can't find out, return a negative errno other than -ENXIO.
+ *
+ * (Shamefully copied from raw-posix.c, only miniscule adaptions.)
+ */
+static int find_allocation(BlockDriverState *bs, off_t start,
+ off_t *data, off_t *hole)
+{
+ BDRVGlusterState *s = bs->opaque;
+ off_t offs;
+
+ if (!s->supports_seek_data) {
+ return -ENOTSUP;
+ }
+
+ /*
+ * SEEK_DATA cases:
+ * D1. offs == start: start is in data
+ * D2. offs > start: start is in a hole, next data at offs
+ * D3. offs < 0, errno = ENXIO: either start is in a trailing hole
+ * or start is beyond EOF
+ * If the latter happens, the file has been truncated behind
+ * our back since we opened it. All bets are off then.
+ * Treating like a trailing hole is simplest.
+ * D4. offs < 0, errno != ENXIO: we learned nothing
+ */
+ offs = glfs_lseek(s->fd, start, SEEK_DATA);
+ if (offs < 0) {
+ return -errno; /* D3 or D4 */
+ }
+ assert(offs >= start);
+
+ if (offs > start) {
+ /* D2: in hole, next data at offs */
+ *hole = start;
+ *data = offs;
+ return 0;
+ }
+
+ /* D1: in data, end not yet known */
+
+ /*
+ * SEEK_HOLE cases:
+ * H1. offs == start: start is in a hole
+ * If this happens here, a hole has been dug behind our back
+ * since the previous lseek().
+ * H2. offs > start: either start is in data, next hole at offs,
+ * or start is in trailing hole, EOF at offs
+ * Linux treats trailing holes like any other hole: offs ==
+ * start. Solaris seeks to EOF instead: offs > start (blech).
+ * If that happens here, a hole has been dug behind our back
+ * since the previous lseek().
+ * H3. offs < 0, errno = ENXIO: start is beyond EOF
+ * If this happens, the file has been truncated behind our
+ * back since we opened it. Treat it like a trailing hole.
+ * H4. offs < 0, errno != ENXIO: we learned nothing
+ * Pretend we know nothing at all, i.e. "forget" about D1.
+ */
+ offs = glfs_lseek(s->fd, start, SEEK_HOLE);
+ if (offs < 0) {
+ return -errno; /* D1 and (H3 or H4) */
+ }
+ assert(offs >= start);
+
+ if (offs > start) {
+ /*
+ * D1 and H2: either in data, next hole at offs, or it was in
+ * data but is now in a trailing hole. In the latter case,
+ * all bets are off. Treating it as if it there was data all
+ * the way to EOF is safe, so simply do that.
+ */
+ *data = start;
+ *hole = offs;
+ return 0;
+ }
+
+ /* D1 and H1 */
+ return -EBUSY;
+}
+
+/*
+ * Returns the allocation status of the specified sectors.
+ *
+ * If 'sector_num' is beyond the end of the disk image the return value is 0
+ * and 'pnum' is set to 0.
+ *
+ * 'pnum' is set to the number of sectors (including and immediately following
+ * the specified sector) that are known to be in the same
+ * allocated/unallocated state.
+ *
+ * 'nb_sectors' is the max value 'pnum' should be set to. If nb_sectors goes
+ * beyond the end of the disk image it will be clamped.
+ *
+ * (Based on raw_co_get_block_status() from raw-posix.c.)
+ */
+static int64_t coroutine_fn qemu_gluster_co_get_block_status(
+ BlockDriverState *bs, int64_t sector_num, int nb_sectors, int *pnum,
+ BlockDriverState **file)
+{
+ BDRVGlusterState *s = bs->opaque;
+ off_t start, data = 0, hole = 0;
+ int64_t total_size;
+ int ret = -EINVAL;
+
+ if (!s->fd) {
+ return ret;
+ }
+
+ start = sector_num * BDRV_SECTOR_SIZE;
+ total_size = bdrv_getlength(bs);
+ if (total_size < 0) {
+ return total_size;
+ } else if (start >= total_size) {
+ *pnum = 0;
+ return 0;
+ } else if (start + nb_sectors * BDRV_SECTOR_SIZE > total_size) {
+ nb_sectors = DIV_ROUND_UP(total_size - start, BDRV_SECTOR_SIZE);
+ }
+
+ ret = find_allocation(bs, start, &data, &hole);
+ if (ret == -ENXIO) {
+ /* Trailing hole */
+ *pnum = nb_sectors;
+ ret = BDRV_BLOCK_ZERO;
+ } else if (ret < 0) {
+ /* No info available, so pretend there are no holes */
+ *pnum = nb_sectors;
+ ret = BDRV_BLOCK_DATA;
+ } else if (data == start) {
+ /* On a data extent, compute sectors to the end of the extent,
+ * possibly including a partial sector at EOF. */
+ *pnum = MIN(nb_sectors, DIV_ROUND_UP(hole - start, BDRV_SECTOR_SIZE));
+ ret = BDRV_BLOCK_DATA;
+ } else {
+ /* On a hole, compute sectors to the beginning of the next extent. */
+ assert(hole == start);
+ *pnum = MIN(nb_sectors, (data - start) / BDRV_SECTOR_SIZE);
+ ret = BDRV_BLOCK_ZERO;
+ }
+
+ *file = bs;
+
+ return ret | BDRV_BLOCK_OFFSET_VALID | start;
+}
+
+
static QemuOptsList qemu_gluster_create_opts = {
.name = "qemu-gluster-create-opts",
.head = QTAILQ_HEAD_INITIALIZER(qemu_gluster_create_opts.head),
@@ -769,6 +947,7 @@ static BlockDriver bdrv_gluster = {
#ifdef CONFIG_GLUSTERFS_ZEROFILL
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
#endif
+ .bdrv_co_get_block_status = qemu_gluster_co_get_block_status,
.create_opts = &qemu_gluster_create_opts,
};
@@ -796,6 +975,7 @@ static BlockDriver bdrv_gluster_tcp = {
#ifdef CONFIG_GLUSTERFS_ZEROFILL
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
#endif
+ .bdrv_co_get_block_status = qemu_gluster_co_get_block_status,
.create_opts = &qemu_gluster_create_opts,
};
@@ -823,6 +1003,7 @@ static BlockDriver bdrv_gluster_unix = {
#ifdef CONFIG_GLUSTERFS_ZEROFILL
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
#endif
+ .bdrv_co_get_block_status = qemu_gluster_co_get_block_status,
.create_opts = &qemu_gluster_create_opts,
};
@@ -850,6 +1031,7 @@ static BlockDriver bdrv_gluster_rdma = {
#ifdef CONFIG_GLUSTERFS_ZEROFILL
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
#endif
+ .bdrv_co_get_block_status = qemu_gluster_co_get_block_status,
.create_opts = &qemu_gluster_create_opts,
};
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 02/10] block/nfs: refuse readahead if cache.direct is on
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 01/10] block/gluster: add support for SEEK_DATA/SEEK_HOLE Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 03/10] block/nfs: add support for libnfs pagecache Jeff Cody
` (8 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: Peter Lieven <pl@kamp.de>
if we open a NFS export with disabled cache we should refuse
the readahead feature as it will cache data inside libnfs.
If a export was opened with readahead enabled it should
futher not be allowed to disable the cache while running.
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Message-id: 1463662083-20814-2-git-send-email-pl@kamp.de
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/nfs.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/block/nfs.c b/block/nfs.c
index 9f51cc3..60be45e 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -1,7 +1,7 @@
/*
* QEMU Block driver for native access to files on NFS shares
*
- * Copyright (c) 2014 Peter Lieven <pl@kamp.de>
+ * Copyright (c) 2014-2016 Peter Lieven <pl@kamp.de>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -47,6 +47,7 @@ typedef struct NFSClient {
bool has_zero_init;
AioContext *aio_context;
blkcnt_t st_blocks;
+ bool cache_used;
} NFSClient;
typedef struct NFSRPC {
@@ -278,7 +279,7 @@ static void nfs_file_close(BlockDriverState *bs)
}
static int64_t nfs_client_open(NFSClient *client, const char *filename,
- int flags, Error **errp)
+ int flags, Error **errp, int open_flags)
{
int ret = -EINVAL, i;
struct stat st;
@@ -330,12 +331,18 @@ static int64_t nfs_client_open(NFSClient *client, const char *filename,
nfs_set_tcp_syncnt(client->context, val);
#ifdef LIBNFS_FEATURE_READAHEAD
} else if (!strcmp(qp->p[i].name, "readahead")) {
+ if (open_flags & BDRV_O_NOCACHE) {
+ error_setg(errp, "Cannot enable NFS readahead "
+ "if cache.direct = on");
+ goto fail;
+ }
if (val > QEMU_NFS_MAX_READAHEAD_SIZE) {
error_report("NFS Warning: Truncating NFS readahead"
" size to %d", QEMU_NFS_MAX_READAHEAD_SIZE);
val = QEMU_NFS_MAX_READAHEAD_SIZE;
}
nfs_set_readahead(client->context, val);
+ client->cache_used = true;
#endif
#ifdef LIBNFS_FEATURE_DEBUG
} else if (!strcmp(qp->p[i].name, "debug")) {
@@ -418,7 +425,7 @@ static int nfs_file_open(BlockDriverState *bs, QDict *options, int flags,
}
ret = nfs_client_open(client, qemu_opt_get(opts, "filename"),
(flags & BDRV_O_RDWR) ? O_RDWR : O_RDONLY,
- errp);
+ errp, bs->open_flags);
if (ret < 0) {
goto out;
}
@@ -454,7 +461,7 @@ static int nfs_file_create(const char *url, QemuOpts *opts, Error **errp)
total_size = ROUND_UP(qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0),
BDRV_SECTOR_SIZE);
- ret = nfs_client_open(client, url, O_CREAT, errp);
+ ret = nfs_client_open(client, url, O_CREAT, errp, 0);
if (ret < 0) {
goto out;
}
@@ -516,6 +523,11 @@ static int nfs_reopen_prepare(BDRVReopenState *state,
return -EACCES;
}
+ if ((state->flags & BDRV_O_NOCACHE) && client->cache_used) {
+ error_setg(errp, "Cannot disable cache if libnfs readahead is enabled");
+ return -EINVAL;
+ }
+
/* Update cache for read-only reopens */
if (!(state->flags & BDRV_O_RDWR)) {
ret = nfs_fstat(client->context, client->fh, &st);
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 03/10] block/nfs: add support for libnfs pagecache
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 01/10] block/gluster: add support for SEEK_DATA/SEEK_HOLE Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 02/10] block/nfs: refuse readahead if cache.direct is on Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 04/10] mirror: fix trace_mirror_yield_in_flight usage in mirror_iteration() Jeff Cody
` (7 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: Peter Lieven <pl@kamp.de>
upcoming libnfs will have support for a read cache that can
significantly help to speed up requests since libnfs by design
circumvents the kernel cache.
Example:
qemu -cdrom nfs://127.0.0.1/iso/my.iso?pagecache=1024
The pagecache parameters takes the maximum amount of pages to
cache. A page in libnfs is always the NFS_BLKSIZE which is
4KB.
Signed-off-by: Peter Lieven <pl@kamp.de>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Message-id: 1463662083-20814-3-git-send-email-pl@kamp.de
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/nfs.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/block/nfs.c b/block/nfs.c
index 60be45e..15d6832 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -38,6 +38,7 @@
#include <nfsc/libnfs.h>
#define QEMU_NFS_MAX_READAHEAD_SIZE 1048576
+#define QEMU_NFS_MAX_PAGECACHE_SIZE (8388608 / NFS_BLKSIZE)
#define QEMU_NFS_MAX_DEBUG_LEVEL 2
typedef struct NFSClient {
@@ -342,6 +343,26 @@ static int64_t nfs_client_open(NFSClient *client, const char *filename,
val = QEMU_NFS_MAX_READAHEAD_SIZE;
}
nfs_set_readahead(client->context, val);
+#ifdef LIBNFS_FEATURE_PAGECACHE
+ nfs_set_pagecache_ttl(client->context, 0);
+#endif
+ client->cache_used = true;
+#endif
+#ifdef LIBNFS_FEATURE_PAGECACHE
+ nfs_set_pagecache_ttl(client->context, 0);
+ } else if (!strcmp(qp->p[i].name, "pagecache")) {
+ if (open_flags & BDRV_O_NOCACHE) {
+ error_setg(errp, "Cannot enable NFS pagecache "
+ "if cache.direct = on");
+ goto fail;
+ }
+ if (val > QEMU_NFS_MAX_PAGECACHE_SIZE) {
+ error_report("NFS Warning: Truncating NFS pagecache"
+ " size to %d pages", QEMU_NFS_MAX_PAGECACHE_SIZE);
+ val = QEMU_NFS_MAX_PAGECACHE_SIZE;
+ }
+ nfs_set_pagecache(client->context, val);
+ nfs_set_pagecache_ttl(client->context, 0);
client->cache_used = true;
#endif
#ifdef LIBNFS_FEATURE_DEBUG
@@ -524,7 +545,8 @@ static int nfs_reopen_prepare(BDRVReopenState *state,
}
if ((state->flags & BDRV_O_NOCACHE) && client->cache_used) {
- error_setg(errp, "Cannot disable cache if libnfs readahead is enabled");
+ error_setg(errp, "Cannot disable cache if libnfs readahead or"
+ " pagecache is enabled");
return -EINVAL;
}
@@ -542,6 +564,15 @@ static int nfs_reopen_prepare(BDRVReopenState *state,
return 0;
}
+#ifdef LIBNFS_FEATURE_PAGECACHE
+static void nfs_invalidate_cache(BlockDriverState *bs,
+ Error **errp)
+{
+ NFSClient *client = bs->opaque;
+ nfs_pagecache_invalidate(client->context, client->fh);
+}
+#endif
+
static BlockDriver bdrv_nfs = {
.format_name = "nfs",
.protocol_name = "nfs",
@@ -565,6 +596,10 @@ static BlockDriver bdrv_nfs = {
.bdrv_detach_aio_context = nfs_detach_aio_context,
.bdrv_attach_aio_context = nfs_attach_aio_context,
+
+#ifdef LIBNFS_FEATURE_PAGECACHE
+ .bdrv_invalidate_cache = nfs_invalidate_cache,
+#endif
};
static void nfs_block_init(void)
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 04/10] mirror: fix trace_mirror_yield_in_flight usage in mirror_iteration()
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (2 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 03/10] block/nfs: add support for libnfs pagecache Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 05/10] block/gluster: add support for selecting debug logging level Jeff Cody
` (6 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: "Denis V. Lunev" <den@openvz.org>
trace_mirror_yield_in_flight accepts 2nd arguments in sectors while here
we pass chunks instead.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1466518157-27140-1-git-send-email-den@openvz.org
CC: Jeff Cody <jcody@redhat.com>
CC: Kevin Wolf <kwolf@redhat.com>
CC: Max Reitz <mreitz@redhat.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/mirror.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/mirror.c b/block/mirror.c
index a04ed9c..930ac96 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -327,7 +327,7 @@ static uint64_t coroutine_fn mirror_iteration(MirrorBlockJob *s)
first_chunk = sector_num / sectors_per_chunk;
while (test_bit(first_chunk, s->in_flight_bitmap)) {
- trace_mirror_yield_in_flight(s, first_chunk, s->in_flight);
+ trace_mirror_yield_in_flight(s, sector_num, s->in_flight);
mirror_wait_for_io(s);
}
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 05/10] block/gluster: add support for selecting debug logging level
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (3 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 04/10] mirror: fix trace_mirror_yield_in_flight usage in mirror_iteration() Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code Jeff Cody
` (5 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
This adds commandline support for the logging level of the
gluster protocol driver, output to stdout. The option is 'debug',
e.g.:
-drive filename=gluster://192.168.15.180/gv2/test.qcow2,debug=9
Debug levels are 0-9, with 9 being the most verbose, and 0 representing
no debugging output. The default is the same as it was before, which
is a level of 4. The current logging levels defined in the gluster
source are:
0 - None
1 - Emergency
2 - Alert
3 - Critical
4 - Error
5 - Warning
6 - Notice
7 - Info
8 - Debug
9 - Trace
(From: glusterfs/logging.h)
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/gluster.c | 48 +++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 41 insertions(+), 7 deletions(-)
diff --git a/block/gluster.c b/block/gluster.c
index 38fce9e..16f7778 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -25,6 +25,7 @@ typedef struct BDRVGlusterState {
struct glfs *glfs;
struct glfs_fd *fd;
bool supports_seek_data;
+ int debug_level;
} BDRVGlusterState;
typedef struct GlusterConf {
@@ -33,6 +34,7 @@ typedef struct GlusterConf {
char *volname;
char *image;
char *transport;
+ int debug_level;
} GlusterConf;
static void qemu_gluster_gconf_free(GlusterConf *gconf)
@@ -195,11 +197,7 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
goto out;
}
- /*
- * TODO: Use GF_LOG_ERROR instead of hard code value of 4 here when
- * GlusterFS makes GF_LOG_* macros available to libgfapi users.
- */
- ret = glfs_set_logging(glfs, "-", 4);
+ ret = glfs_set_logging(glfs, "-", gconf->debug_level);
if (ret < 0) {
goto out;
}
@@ -257,16 +255,26 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
qemu_bh_schedule(acb->bh);
}
+#define GLUSTER_OPT_FILENAME "filename"
+#define GLUSTER_OPT_DEBUG "debug"
+#define GLUSTER_DEBUG_DEFAULT 4
+#define GLUSTER_DEBUG_MAX 9
+
/* TODO Convert to fine grained options */
static QemuOptsList runtime_opts = {
.name = "gluster",
.head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
.desc = {
{
- .name = "filename",
+ .name = GLUSTER_OPT_FILENAME,
.type = QEMU_OPT_STRING,
.help = "URL to the gluster image",
},
+ {
+ .name = GLUSTER_OPT_DEBUG,
+ .type = QEMU_OPT_NUMBER,
+ .help = "Gluster log level, valid range is 0-9",
+ },
{ /* end of list */ }
},
};
@@ -329,8 +337,17 @@ static int qemu_gluster_open(BlockDriverState *bs, QDict *options,
goto out;
}
- filename = qemu_opt_get(opts, "filename");
+ filename = qemu_opt_get(opts, GLUSTER_OPT_FILENAME);
+ s->debug_level = qemu_opt_get_number(opts, GLUSTER_OPT_DEBUG,
+ GLUSTER_DEBUG_DEFAULT);
+ if (s->debug_level < 0) {
+ s->debug_level = 0;
+ } else if (s->debug_level > GLUSTER_DEBUG_MAX) {
+ s->debug_level = GLUSTER_DEBUG_MAX;
+ }
+
+ gconf->debug_level = s->debug_level;
s->glfs = qemu_gluster_init(gconf, filename, errp);
if (!s->glfs) {
ret = -errno;
@@ -388,6 +405,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
BlockReopenQueue *queue, Error **errp)
{
int ret = 0;
+ BDRVGlusterState *s;
BDRVGlusterReopenState *reop_s;
GlusterConf *gconf = NULL;
int open_flags = 0;
@@ -395,6 +413,8 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
assert(state != NULL);
assert(state->bs != NULL);
+ s = state->bs->opaque;
+
state->opaque = g_new0(BDRVGlusterReopenState, 1);
reop_s = state->opaque;
@@ -402,6 +422,7 @@ static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
gconf = g_new0(GlusterConf, 1);
+ gconf->debug_level = s->debug_level;
reop_s->glfs = qemu_gluster_init(gconf, state->bs->filename, errp);
if (reop_s->glfs == NULL) {
ret = -errno;
@@ -535,6 +556,14 @@ static int qemu_gluster_create(const char *filename,
char *tmp = NULL;
GlusterConf *gconf = g_new0(GlusterConf, 1);
+ gconf->debug_level = qemu_opt_get_number_del(opts, GLUSTER_OPT_DEBUG,
+ GLUSTER_DEBUG_DEFAULT);
+ if (gconf->debug_level < 0) {
+ gconf->debug_level = 0;
+ } else if (gconf->debug_level > GLUSTER_DEBUG_MAX) {
+ gconf->debug_level = GLUSTER_DEBUG_MAX;
+ }
+
glfs = qemu_gluster_init(gconf, filename, errp);
if (!glfs) {
ret = -errno;
@@ -919,6 +948,11 @@ static QemuOptsList qemu_gluster_create_opts = {
.type = QEMU_OPT_STRING,
.help = "Preallocation mode (allowed values: off, full)"
},
+ {
+ .name = GLUSTER_OPT_DEBUG,
+ .type = QEMU_OPT_NUMBER,
+ .help = "Gluster log level, valid range is 0-9",
+ },
{ /* end of list */ }
}
};
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (4 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 05/10] block/gluster: add support for selecting debug logging level Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 07/10] mirror: limit niov to IOV_MAX elements, again Jeff Cody
` (4 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: John Snow <jsnow@redhat.com>
mirror_do_read intends to return the number of sectors processed after
the starting sector, without regard to how many sectors were processed
before the starting sector due to alignment.
Clean up the comments and code to hopefully illustrate this more clearly.
This also fixes an issue in initialization where if the mirror buffer size
is initialized to smaller than the number of sectors being requested for
transfer, we report back an incorrectly large number to the caller.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-id: 1466625064-11280-2-git-send-email-jsnow@redhat.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/mirror.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/block/mirror.c b/block/mirror.c
index 930ac96..42ebc3b 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -218,7 +218,9 @@ static inline void mirror_wait_for_io(MirrorBlockJob *s)
}
/* Submit async read while handling COW.
- * Returns: nb_sectors if no alignment is necessary, or
+ * Returns: The number of sectors copied after and including sector_num,
+ * excluding any sectors copied prior to sector_num due to alignment.
+ * This will be nb_sectors if no alignment is necessary, or
* (new_end - sector_num) if tail is rounded up or down due to
* alignment or buffer limit.
*/
@@ -227,7 +229,7 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t sector_num,
{
BlockBackend *source = s->common.blk;
int sectors_per_chunk, nb_chunks;
- int ret = nb_sectors;
+ int ret;
MirrorOp *op;
sectors_per_chunk = s->granularity >> BDRV_SECTOR_BITS;
@@ -235,6 +237,7 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t sector_num,
/* We can only handle as much as buf_size at a time. */
nb_sectors = MIN(s->buf_size >> BDRV_SECTOR_BITS, nb_sectors);
assert(nb_sectors);
+ ret = nb_sectors;
if (s->cow_bitmap) {
ret += mirror_cow_align(s, §or_num, &nb_sectors);
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 07/10] mirror: limit niov to IOV_MAX elements, again
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (5 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 08/10] iotests: add small-granularity mirror test Jeff Cody
` (3 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: John Snow <jsnow@redhat.com>
During the refactor of mirror_iteration in e5b43573,
we regressed the fix introduced in cae98cb8.
This patch re-adds IOV_MAX checking to cases where we
aren't checking alignment (and size) already.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-id: 1466625064-11280-3-git-send-email-jsnow@redhat.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/mirror.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/block/mirror.c b/block/mirror.c
index 42ebc3b..5bac906 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -231,11 +231,14 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t sector_num,
int sectors_per_chunk, nb_chunks;
int ret;
MirrorOp *op;
+ int max_sectors;
sectors_per_chunk = s->granularity >> BDRV_SECTOR_BITS;
+ max_sectors = sectors_per_chunk * s->max_iov;
/* We can only handle as much as buf_size at a time. */
nb_sectors = MIN(s->buf_size >> BDRV_SECTOR_BITS, nb_sectors);
+ nb_sectors = MIN(max_sectors, nb_sectors);
assert(nb_sectors);
ret = nb_sectors;
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 08/10] iotests: add small-granularity mirror test
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (6 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 07/10] mirror: limit niov to IOV_MAX elements, again Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 09/10] blockjob: assert(cb) when create job Jeff Cody
` (2 subsequent siblings)
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: John Snow <jsnow@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-id: 1466625064-11280-4-git-send-email-jsnow@redhat.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
tests/qemu-iotests/041 | 30 ++++++++++++++++++++++++++++++
tests/qemu-iotests/041.out | 4 ++--
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
index ed1d9d4..cbf5e0b 100755
--- a/tests/qemu-iotests/041
+++ b/tests/qemu-iotests/041
@@ -727,6 +727,36 @@ class TestUnbackedSource(iotests.QMPTestCase):
self.complete_and_wait()
self.assert_no_active_block_jobs()
+class TestGranularity(iotests.QMPTestCase):
+ image_len = 10 * 1024 * 1024 # MB
+
+ def setUp(self):
+ qemu_img('create', '-f', iotests.imgfmt, test_img,
+ str(TestGranularity.image_len))
+ qemu_io('-c', 'write 0 %d' % (self.image_len),
+ test_img)
+ self.vm = iotests.VM().add_drive(test_img)
+ self.vm.launch()
+
+ def tearDown(self):
+ self.vm.shutdown()
+ self.assertTrue(iotests.compare_images(test_img, target_img),
+ 'target image does not match source after mirroring')
+ os.remove(test_img)
+ os.remove(target_img)
+
+ def test_granularity(self):
+ self.assert_no_active_block_jobs()
+ result = self.vm.qmp('drive-mirror', device='drive0',
+ sync='full', target=target_img,
+ mode='absolute-paths', granularity=8192)
+ self.assert_qmp(result, 'return', {})
+ event = self.vm.get_qmp_event(wait=60.0)
+ # Failures will manifest as COMPLETED/ERROR.
+ self.assert_qmp(event, 'event', 'BLOCK_JOB_READY')
+ self.complete_and_wait(drive='drive0', wait_ready=False)
+ self.assert_no_active_block_jobs()
+
class TestRepairQuorum(iotests.QMPTestCase):
""" This class test quorum file repair using drive-mirror.
It's mostly a fork of TestSingleDrive """
diff --git a/tests/qemu-iotests/041.out b/tests/qemu-iotests/041.out
index b0cadc8..b67d050 100644
--- a/tests/qemu-iotests/041.out
+++ b/tests/qemu-iotests/041.out
@@ -1,5 +1,5 @@
-...........................................................................
+............................................................................
----------------------------------------------------------------------
-Ran 75 tests
+Ran 76 tests
OK
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 09/10] blockjob: assert(cb) when create job
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (7 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 08/10] iotests: add small-granularity mirror test Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 10/10] mirror: fix misleading comments Jeff Cody
2016-06-29 18:13 ` [Qemu-devel] [PULL 00/10] Block patches Peter Maydell
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
Callback for block job should always exist
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Suggested-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Message-id: 1466672241-22485-2-git-send-email-xiecl.fnst@cn.fujitsu.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/backup.c | 1 -
blockjob.c | 1 +
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/backup.c b/block/backup.c
index 581269b..f87f8d5 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -489,7 +489,6 @@ void backup_start(BlockDriverState *bs, BlockDriverState *target,
assert(bs);
assert(target);
- assert(cb);
if (bs == target) {
error_setg(errp, "Source and target cannot be the same");
diff --git a/blockjob.c b/blockjob.c
index 90c4e26..205da9d 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -110,6 +110,7 @@ void *block_job_create(const BlockJobDriver *driver, BlockDriverState *bs,
BlockBackend *blk;
BlockJob *job;
+ assert(cb);
if (bs->job) {
error_setg(errp, QERR_DEVICE_IN_USE, bdrv_get_device_name(bs));
return NULL;
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 10/10] mirror: fix misleading comments
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (8 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 09/10] blockjob: assert(cb) when create job Jeff Cody
@ 2016-06-29 3:10 ` Jeff Cody
2016-06-29 18:13 ` [Qemu-devel] [PULL 00/10] Block patches Peter Maydell
10 siblings, 0 replies; 26+ messages in thread
From: Jeff Cody @ 2016-06-29 3:10 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel
From: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
s/target bs/to_replace/, also we check to_replace bs is not
blocked in qmp_drive_mirror() not here
Signed-off-by: Changlong Xie <xiecl.fnst@cn.fujitsu.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Message-id: 1466672241-22485-3-git-send-email-xiecl.fnst@cn.fujitsu.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
block/mirror.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/mirror.c b/block/mirror.c
index 5bac906..8d96049 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -775,7 +775,7 @@ static void mirror_complete(BlockJob *job, Error **errp)
}
}
- /* check the target bs is not blocked and block all operations on it */
+ /* block all operations on to_replace bs */
if (s->replaces) {
AioContext *replace_aio_context;
--
1.9.3
^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
` (9 preceding siblings ...)
2016-06-29 3:10 ` [Qemu-devel] [PULL 10/10] mirror: fix misleading comments Jeff Cody
@ 2016-06-29 18:13 ` Peter Maydell
10 siblings, 0 replies; 26+ messages in thread
From: Peter Maydell @ 2016-06-29 18:13 UTC (permalink / raw)
To: Jeff Cody; +Cc: Qemu-block, QEMU Developers
On 29 June 2016 at 04:10, Jeff Cody <jcody@redhat.com> wrote:
> The following changes since commit d7f30403576f04f1f3a5fb5a1d18cba8dfa7a6d2:
>
> cputlb: don't cpu_abort() if guest tries to execute outside RAM or RAM (2016-06-28 18:50:53 +0100)
>
> are available in the git repository at:
>
> git@github.com:codyprime/qemu-kvm-jtc.git tags/block-pull-request
>
> for you to fetch changes up to 15d6729850728ee49859711dd40b00d8d85d94ee:
>
> mirror: fix misleading comments (2016-06-28 23:08:25 -0400)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 26+ messages in thread
* [Qemu-devel] [PULL 00/10] Block patches
@ 2017-12-18 21:08 Jeff Cody
2017-12-19 19:10 ` Peter Maydell
0 siblings, 1 reply; 26+ messages in thread
From: Jeff Cody @ 2017-12-18 21:08 UTC (permalink / raw)
To: qemu-block; +Cc: peter.maydell, jcody, vsementsov, jsnow, qemu-devel
The following changes since commit 411ad78115ebeb3411cf4b7622784b93dfabe259:
Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2017-12-15-1' into staging (2017-12-17 15:27:41 +0000)
are available in the git repository at:
git://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request
for you to fetch changes up to 996922de45299878cdc4c15b72b19edf2bc618a4:
block/curl: fix minor memory leaks (2017-12-18 15:44:39 -0500)
----------------------------------------------------------------
Blockjob and protocol patches
----------------------------------------------------------------
Jeff Cody (4):
block/sheepdog: remove spurious NULL check
block/sheepdog: code beautification
block/curl: check error return of curl_global_init()
block/curl: fix minor memory leaks
John Snow (1):
blockjob: kick jobs on set-speed
Vladimir Sementsov-Ogievskiy (5):
hbitmap: add next_zero function
backup: move from done_bitmap to copy_bitmap
backup: init copy_bitmap from sync_bitmap for incremental
backup: simplify non-dirty bits progress processing
backup: use copy_bitmap in incremental backup
block/backup.c | 116 +++++++++++++++++-------------
block/curl.c | 24 +++++--
block/dirty-bitmap.c | 5 ++
block/sheepdog.c | 166 +++++++++++++++++++++----------------------
blockjob.c | 30 +++++++-
include/block/dirty-bitmap.h | 1 +
include/qemu/hbitmap.h | 8 +++
tests/test-hbitmap.c | 61 ++++++++++++++++
util/hbitmap.c | 39 ++++++++++
9 files changed, 309 insertions(+), 141 deletions(-)
--
2.9.5
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Qemu-devel] [PULL 00/10] Block patches
2017-12-18 21:08 Jeff Cody
@ 2017-12-19 19:10 ` Peter Maydell
0 siblings, 0 replies; 26+ messages in thread
From: Peter Maydell @ 2017-12-19 19:10 UTC (permalink / raw)
To: Jeff Cody
Cc: Qemu-block, Vladimir Sementsov-Ogievskiy, John Snow,
QEMU Developers
On 18 December 2017 at 21:08, Jeff Cody <jcody@redhat.com> wrote:
> The following changes since commit 411ad78115ebeb3411cf4b7622784b93dfabe259:
>
> Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2017-12-15-1' into staging (2017-12-17 15:27:41 +0000)
>
> are available in the git repository at:
>
> git://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request
>
> for you to fetch changes up to 996922de45299878cdc4c15b72b19edf2bc618a4:
>
> block/curl: fix minor memory leaks (2017-12-18 15:44:39 -0500)
>
> ----------------------------------------------------------------
> Blockjob and protocol patches
> ----------------------------------------------------------------
>
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2017-12-19 19:11 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-29 3:10 [Qemu-devel] [PULL 00/10] Block patches Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 01/10] block/gluster: add support for SEEK_DATA/SEEK_HOLE Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 02/10] block/nfs: refuse readahead if cache.direct is on Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 03/10] block/nfs: add support for libnfs pagecache Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 04/10] mirror: fix trace_mirror_yield_in_flight usage in mirror_iteration() Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 05/10] block/gluster: add support for selecting debug logging level Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 07/10] mirror: limit niov to IOV_MAX elements, again Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 08/10] iotests: add small-granularity mirror test Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 09/10] blockjob: assert(cb) when create job Jeff Cody
2016-06-29 3:10 ` [Qemu-devel] [PULL 10/10] mirror: fix misleading comments Jeff Cody
2016-06-29 18:13 ` [Qemu-devel] [PULL 00/10] Block patches Peter Maydell
-- strict thread matches above, loose matches on Subject: below --
2017-12-18 21:08 Jeff Cody
2017-12-19 19:10 ` Peter Maydell
2015-12-22 8:54 Stefan Hajnoczi
2015-12-22 14:47 ` Peter Maydell
2015-06-12 14:57 Stefan Hajnoczi
2015-06-15 9:42 ` Peter Maydell
2013-06-04 12:45 Kevin Wolf
2013-06-17 21:17 ` Anthony Liguori
2012-08-15 13:56 Kevin Wolf
2012-08-15 19:49 ` Anthony Liguori
2011-04-13 12:05 Kevin Wolf
2010-11-04 13:15 Kevin Wolf
2010-08-30 16:32 Kevin Wolf
2010-09-06 15:07 ` Kevin Wolf
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).