On Fri, Aug 18, 2017 at 03:05:31PM +0200, Alberto Garcia wrote:
On Fri 18 Aug 2017 05:10:17 AM CEST, Manos Pitsidianakis wrote:
* If no ThrottleGroup is found with the given name a new one is
* created.
*
- * @name: the name of the ThrottleGroup
+ * This function edits throttle_groups
On Fri, Aug 18, 2017 at 10:23:09AM +0200, Alberto Garcia wrote:
On Fri 18 Aug 2017 05:10:18 AM CEST, Manos Pitsidianakis wrote:
block/throttle.c uses existing I/O throttle infrastructure inside a
block filter driver. I/O operations are intercepted in the filter's
read/write coroutines
{
"iops-total" : 99
}
}
}
This also means a group's configuration can be fetched with qom-get.
ThrottleGroups can be anonymous which means they can't get accessed by
other users ie they will always be units instead of group (Because they
have one ThrottleGroupMember
. This is done by gathering ThrottleGroup membership
details from BlockBackendPublic into ThrottleGroupMember and refactoring
existing code to use the structure.
Reviewed-by: Alberto Garcia <be...@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidi
com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
include/block/throttle-groups.h | 7 -
block/block-backend.c | 15 --
block/throttle-groups.c | 38 -
tes
hrottling filter driver infrastructure
+ *
+ * Copyright (c) 2017 Manos Pitsidianakis
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either ve
Move the CoMutex and CoQueue inits inside throttle_group_register_tgm()
which is called whenever a ThrottleGroupMember is initialized. There's
no need for them to be separate.
Reviewed-by: Alberto Garcia <be...@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-o
in BlockDevOptionsThrottle
v3:
fix style error in 'add aio_context field in ThrottleGroupMember'
v2:
change QOM throttle group object name
print valid ranges for uint on error
move frees in throttle_group_obj_finalize()
split throttle_group_{set,get}()
add throttle_recurse_is_first_non_filter()
Manos
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
tests/qemu-iotests/184 | 310 +
tests/qemu-iotests/184.out | 422 +
tests/qemu-iotests/group | 1 +
3 files changed, 733 insertions(+)
creat
On Wed, Aug 16, 2017 at 02:25:44PM +0100, Stefan Hajnoczi wrote:
On Tue, Aug 15, 2017 at 11:18:53AM +0300, Manos Pitsidianakis wrote:
block/backup.c currently uses before write notifiers on the targeted
node. We can create a filter node instead to intercept write requests
for the backup job
On Wed, Aug 16, 2017 at 06:59:25AM -0500, Eric Blake wrote:
On 08/16/2017 04:41 AM, Manos Pitsidianakis wrote:
+##
+# @block-insert-node:
+#
+# Insert a filter node between a specific edge in the block driver
state graph.
+# @parent: the name of the parent node or device
+# @node:the name
On Tue, Aug 15, 2017 at 05:12:42PM -0500, Eric Blake wrote:
On 08/15/2017 02:45 AM, Manos Pitsidianakis wrote:
block-insert-node and its pair command block-remove-node provide runtime
insertion and removal of filter nodes.
block-insert-node takes a (parent, child) and (node, child) pair
On Tue, Aug 15, 2017 at 03:24:38PM +0200, Alberto Garcia wrote:
On Wed 09 Aug 2017 04:02:51 PM CEST, Manos Pitsidianakis wrote:
@@ -2988,6 +3004,9 @@ void qmp_block_stream(bool has_job_id, const char
*job_id, const char *device,
return;
}
+/* Skip implicit filter nodes
into the block layer. Block filter drivers are inserted into the graph
only when a feature is needed. This makes the block layer more modular
and reuses the block driver abstraction that is already present.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block.c
present.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/qapi.c| 2 +-
block/write-threshold.c | 264 +++-
include/block/write-threshold.h | 22 ++--
qapi/block-core.json| 19 ++-
tests/test
) to using the filter driver.
v2:
add motivation in commit messages
dropped hunk that removed before-write notifiers
Manos Pitsidianakis (2):
block: use internal filter node in backup
block: add filter driver to block/write-threshold.c
block.c | 89
On Tue, Aug 15, 2017 at 10:44:15AM +0300, Vladimir Sementsov-Ogievskiy wrote:
15.08.2017 09:19, Manos Pitsidianakis wrote:
block/backup.c currently uses before write notifiers on the targeted
node. We can create a filter node instead to intercept write requests
for the backup job on the BDS
BdrvChildRole.
This is a different approach than x-blockdev-change which uses the driver
methods bdrv_add_child() and bdrv_del_child(),
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block.c| 192
blockdev.c | 44 ++
include/block/b
driver, so it is not affected.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/qapi.c| 2 +-
block/write-threshold.c | 264 +++-
include/block/write-threshold.h | 22 ++--
qapi/block-core.json
block/backup.c currently uses before write notifiers on the targeted
node. We can create a filter node instead to intercept write requests
for the backup job on the BDS level, instead of the BlockBackend level.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
b
-threshold) to using the filter driver.
Based-on: <20170809140256.25584-1-el13...@mail.ntua.gr>
Manos Pitsidianakis (2):
block: use internal filter node in backup
block: add filter driver to block/write-threshold.c
block.c | 89 --
block/ba
On Wed, Aug 09, 2017 at 05:39:42PM +0200, Kevin Wolf wrote:
Am 09.08.2017 um 16:45 hat Alberto Garcia geschrieben:
On Wed 09 Aug 2017 03:42:07 PM CEST, Manos Pitsidianakis wrote:
> On Wed, Aug 09, 2017 at 02:36:20PM +0200, Alberto Garcia wrote:
>>On Wed 09 Aug 2017 11:36:12 AM CE
On Wed, Aug 09, 2017 at 01:07:32PM +0300, Manos Pitsidianakis wrote:
+static int coroutine_fn throttle_co_preadv(BlockDriverState *bs,
+ uint64_t offset, uint64_t bytes,
+ QEMUIOVector *qiov, int flags
On Thu, Aug 10, 2017 at 03:54:02PM +0200, Alberto Garcia wrote:
On Wed 09 Aug 2017 12:07:32 PM CEST, Manos Pitsidianakis wrote:
+/* Extract ThrottleConfig options. Assumes cfg is initialized and will be
+ * checked for validity.
+ *
+ * Returns -1 and sets errp if a burst_length value is over
of the
device. The legacy throttle node is managed by the legacy interface
completely. More advanced configurations with the filter drive are
possible using the QMP API, but these will be ignored by the legacy
interface.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block
-id when device is a node name
new commit: remove BlockBackendPublic
new commit: add dedicated iotest
cleanup reference counting in block/block-backend.c functions
add new function to get filter child bs
take ownership of options in bdrv_new_open_driver()
Manos Pitsidianakis (6):
block
"sync": "full",
"target": "backup.img" } }
is not a BlockBackend name, instead of automatically getting it from the
root BS if device is a node name. That information is lost after calling
block_job_create(), so we can do it in its
Check that the implicit throttle filter driver node, used for
compatibility with the legacy throttling interface on the BlockBackend
level, works.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
tests/qemu-iotests/191 | 138 +
BlockBackend, which we want to be skipped during automatic
operations on the graph since the user does not necessarily know about
their existence.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block.c | 10 ++
block/qapi.c
Allow passing a QDict *options parameter to bdrv_new_open_driver() so
that it can be used if a driver needs it upon creation. The previous
behaviour (empty bs->options and bs->explicit_options) remains when
options is NULL.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
All BlockBackend level throttling (via the implicit throttle filter node) is
done in block/block-backend.c and block/throttle-groups.c doesn't know
about BlockBackends anymore. Since BlockBackendPublic is not needed anymore,
remove it.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua
On Wed, Aug 09, 2017 at 02:36:20PM +0200, Alberto Garcia wrote:
On Wed 09 Aug 2017 11:36:12 AM CEST, Manos Pitsidianakis wrote:
On Tue, Aug 08, 2017 at 05:04:48PM +0200, Alberto Garcia wrote:
On Tue 08 Aug 2017 04:56:20 PM CEST, Manos Pitsidianakis wrote:
So basically if we have anonymous
{
"iops-total" : 99
}
}
}
This also means a group's configuration can be fetched with qom-get.
ThrottleGroups can be anonymous which means they can't get accessed by
other users ie they will always be units instead of group (Because they
have one ThrottleGroupMem
-obj-y += throttle.o
block-obj-y += crypto.o
diff --git a/block/throttle.c b/block/throttle.c
new file mode 100644
index 00..3e6cb1de7b
--- /dev/null
+++ b/block/throttle.c
@@ -0,0 +1,315 @@
+/*
+ * QEMU block throttling filter driver infrastructure
+ *
+ * Copyright (c) 2017 Manos Pitsidi
Move the CoMutex and CoQueue inits inside throttle_group_register_tgm()
which is called whenever a ThrottleGroupMember is initialized. There's
no need for them to be separate.
Reviewed-by: Alberto Garcia <be...@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-o
com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/block-backend.c | 15 +-
block/throttle-groups.c | 38 -
include/block/throttle-groups.h | 7 -
tes
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
tests/qemu-iotests/184 | 310 +
tests/qemu-iotests/184.out | 422 +
tests/qemu-iotests/group | 1 +
3 files changed, 733 insertions(+)
creat
This is needed to configure throttle filter driver nodes with QAPI.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
qapi/block-core.json | 22 +-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/qapi/block-core.json b/qapi/block-core.json
. This is done by gathering ThrottleGroup membership
details from BlockBackendPublic into ThrottleGroupMember and refactoring
existing code to use the structure.
Reviewed-by: Alberto Garcia <be...@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidi
group object name
print valid ranges for uint on error
move frees in throttle_group_obj_finalize()
split throttle_group_{set,get}()
add throttle_recurse_is_first_non_filter()
Manos Pitsidianakis (7):
block: move ThrottleGroup membership to ThrottleGroupMember
block: add aio_context
On Tue, Aug 08, 2017 at 05:04:48PM +0200, Alberto Garcia wrote:
On Tue 08 Aug 2017 04:56:20 PM CEST, Manos Pitsidianakis wrote:
So basically if we have anonymous groups, we accept limits in the
driver options but only without a group-name.
In the commit message you do however have limits
On Tue, Aug 08, 2017 at 04:53:08PM +0200, Alberto Garcia wrote:
On Tue 08 Aug 2017 03:45:44 PM CEST, Manos Pitsidianakis wrote:
On Tue, Aug 08, 2017 at 03:13:36PM +0200, Alberto Garcia wrote:
On Mon 31 Jul 2017 11:54:41 AM CEST, Manos Pitsidianakis wrote:
block/throttle.c uses existing I/O
On Tue, Aug 08, 2017 at 03:13:36PM +0200, Alberto Garcia wrote:
On Mon 31 Jul 2017 11:54:41 AM CEST, Manos Pitsidianakis wrote:
block/throttle.c uses existing I/O throttle infrastructure inside a
block filter driver. I/O operations are intercepted in the filter's
read/write coroutines
On Thu, Aug 03, 2017 at 06:58:30AM -0500, Eric Blake wrote:
On 08/03/2017 03:07 AM, Kevin Wolf wrote:
Am 31.07.2017 um 11:54 hat Manos Pitsidianakis geschrieben:
block/throttle.c uses existing I/O throttle infrastructure inside a
block filter driver. I/O operations are intercepted
On Thu, Aug 03, 2017 at 03:32:58PM +0200, Kevin Wolf wrote:
Am 03.08.2017 um 15:24 hat Manos Pitsidianakis geschrieben:
On Thu, Aug 03, 2017 at 10:07:50AM +0200, Kevin Wolf wrote:
> Am 31.07.2017 um 11:54 hat Manos Pitsidianakis geschrieben:
> > Signed-off-by: Manos Pitsidiana
On Thu, Aug 03, 2017 at 10:07:50AM +0200, Kevin Wolf wrote:
Am 31.07.2017 um 11:54 hat Manos Pitsidianakis geschrieben:
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
I would add at least two more cases:
* Both limits and throttle-group are given in blockdev-add
This
On Thu, Aug 03, 2017 at 01:17:01PM +0200, Kevin Wolf wrote:
Am 03.08.2017 um 12:53 hat Stefan Hajnoczi geschrieben:
On Thu, Aug 03, 2017 at 10:08:01AM +0200, Kevin Wolf wrote:
> Am 02.08.2017 um 12:57 hat Manos Pitsidianakis geschrieben:
> > On Wed, Aug 02, 2017 at 11:39:22AM +010
On Thu, Aug 03, 2017 at 10:07:41AM +0200, Kevin Wolf wrote:
Am 31.07.2017 um 11:54 hat Manos Pitsidianakis geschrieben:
+/* Extract ThrottleConfig options. Assumes cfg is initialized and will be
+ * checked for validity.
+ */
+static int throttle_extract_options(QemuOpts *opts, ThrottleConfig
On Wed, Aug 02, 2017 at 12:33:19PM +0200, Kevin Wolf wrote:
Am 02.08.2017 um 12:07 hat Stefan Hajnoczi geschrieben:
On Tue, Aug 01, 2017 at 04:49:07PM +0300, Manos Pitsidianakis wrote:
> diff --git a/block.c b/block.c
> index 9ebdba28b0..c6aad25286 100644
> --- a/block.c
> +
On Wed, Aug 02, 2017 at 11:39:22AM +0100, Stefan Hajnoczi wrote:
On Tue, Aug 01, 2017 at 07:49:33PM +0300, Manos Pitsidianakis wrote:
On Tue, Aug 01, 2017 at 04:47:03PM +0100, Stefan Hajnoczi wrote:
> On Mon, Jul 31, 2017 at 12:54:40PM +0300, Manos Pitsidianakis wrote:
> > Thro
On Wed, Aug 02, 2017 at 11:07:24AM +0100, Stefan Hajnoczi wrote:
On Tue, Aug 01, 2017 at 04:49:07PM +0300, Manos Pitsidianakis wrote:
diff --git a/block.c b/block.c
index 9ebdba28b0..c6aad25286 100644
--- a/block.c
+++ b/block.c
@@ -1975,6 +1975,7 @@ BdrvChild *bdrv_root_attach_child
On Tue, Aug 01, 2017 at 04:47:03PM +0100, Stefan Hajnoczi wrote:
On Mon, Jul 31, 2017 at 12:54:40PM +0300, Manos Pitsidianakis wrote:
ThrottleGroup is converted to an object. This will allow the future
throttle block filter drive easy creation and configuration of throttle
groups in QMP and cli
On Tue, Aug 01, 2017 at 03:50:36PM +0200, Kevin Wolf wrote:
Am 31.07.2017 um 19:30 hat Manos Pitsidianakis geschrieben:
On Fri, Jul 28, 2017 at 02:08:43PM +0200, Kevin Wolf wrote:
> Am 27.07.2017 um 12:07 hat Stefan Hajnoczi geschrieben:
> > On Wed, Jul 26, 2017 at 09:23:20PM +03
of the
device. The legacy throttle node is managed by the legacy interface
completely. More advanced configurations with the filter drive are
possible using the QMP API, but these will be ignored by the legacy
interface.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
b
the device's
BlockBackend.
Manos Pitsidianakis (3):
block: add options parameter to bdrv_new_open_driver()
block: skip implicit nodes in snapshots, blockjobs
block: remove legacy I/O throttling
block.c | 41 ++-
block/block-backend.c | 149
Allow passing a QDict *options parameter to bdrv_new_open_driver() so
that it can be used if a driver needs it upon creation. The previous
behaviour (empty bs->options and bs->explicit_options) remains when
options is NULL.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
BlockBackend, which we want to be skipped during automatic
operations on the graph since the user does not necessarily know about
their existence.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block.c | 17 +
blockdev.c
On Fri, Jul 28, 2017 at 02:08:43PM +0200, Kevin Wolf wrote:
Am 27.07.2017 um 12:07 hat Stefan Hajnoczi geschrieben:
On Wed, Jul 26, 2017 at 09:23:20PM +0300, Manos Pitsidianakis wrote:
> On Wed, Jul 26, 2017 at 04:12:21PM +0100, Stefan Hajnoczi wrote:
> > On Wed, Jul 26, 2017 at 0
. This is done by gathering ThrottleGroup membership
details from BlockBackendPublic into ThrottleGroupMember and refactoring
existing code to use the structure.
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/blo
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
tests/qemu-iotests/184 | 237 +
tests/qemu-iotests/184.out | 319 +
tests/qemu-iotests/group | 1 +
3 files changed, 557 insertions(+)
creat
{
"iops-total" : 99
}
}
}
This also means a group's configuration can be fetched with qom-get.
ThrottleGroups can be anonymous which means they can't get accessed by
other users ie they will always be units instead of group (Because they
have one ThrottleGroupM
This is needed to configure throttle filter driver nodes with QAPI.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
qapi/block-core.json | 20 +++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/qapi/block-core.json b/qapi/block-core.json
com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/block-backend.c | 15 +-
block/throttle-groups.c | 38 -
include/block/throttle-groups.h | 7 -
tests/test-throttle.c
-obj-y += throttle.o
block-obj-y += crypto.o
diff --git a/block/throttle.c b/block/throttle.c
new file mode 100644
index 00..f3395462fb
--- /dev/null
+++ b/block/throttle.c
@@ -0,0 +1,395 @@
+/*
+ * QEMU block throttling filter driver infrastructure
+ *
+ * Copyright (c) 2017 Manos Pitsidi
'
v2:
change QOM throttle group object name
print valid ranges for uint on error
move frees in throttle_group_obj_finalize()
split throttle_group_{set,get}()
add throttle_recurse_is_first_non_filter()
Manos Pitsidianakis (7):
block: move ThrottleGroup membership to ThrottleGroupMember
Move the CoMutex and CoQueue inits inside throttle_group_register_tgm()
which is called whenever a ThrottleGroupMember is initialized. There's
no need for them to be separate.
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
On Thu, Jul 27, 2017 at 06:09:04PM -0400, John Snow wrote:
On 07/26/2017 02:23 PM, Manos Pitsidianakis wrote:
On Wed, Jul 26, 2017 at 04:12:21PM +0100, Stefan Hajnoczi wrote:
On Wed, Jul 26, 2017 at 05:19:24PM +0300, Manos Pitsidianakis wrote:
This proposal follows a discussion we had
On Wed, Jul 26, 2017 at 04:12:21PM +0100, Stefan Hajnoczi wrote:
On Wed, Jul 26, 2017 at 05:19:24PM +0300, Manos Pitsidianakis wrote:
This proposal follows a discussion we had with Kevin and Stefan on filter
node management.
With block filter drivers arises a need to configure filter nodes
. This is done by gathering ThrottleGroup membership
details from BlockBackendPublic into ThrottleGroupMember and refactoring
existing code to use the structure.
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/blo
{
"iops-total" : 99
}
}
}
This also means a group's configuration can be fetched with qom-get.
ThrottleGroups can be anonymous which means they can't get accessed by
other users ie they will always be units instead of group (Because they
have one ThrottleGroupM
Move the CoMutex and CoQueue inits inside throttle_group_register_tgm()
which is called whenever a ThrottleGroupMember is initialized. There's
no need for them to be separate.
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/block-backend.c | 14 -
block/throttle-groups.c | 38 -
include/block/throttle-groups.h | 7 -
tests/test-throttle.c | 63 +---
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
tests/qemu-iotests/184 | 237 +
tests/qemu-iotests/184.out | 319 +
tests/qemu-iotests/group | 1 +
3 files changed, 557 insertions(+)
creat
for uint on error
move frees in throttle_group_obj_finalize()
split throttle_group_{set,get}()
add throttle_recurse_is_first_non_filter()
Manos Pitsidianakis (7):
block: move ThrottleGroup membership to ThrottleGroupMember
block: add aio_context field in ThrottleGroupMember
block: tidy
-obj-y += throttle.o
block-obj-y += crypto.o
diff --git a/block/throttle.c b/block/throttle.c
new file mode 100644
index 00..f3395462fb
--- /dev/null
+++ b/block/throttle.c
@@ -0,0 +1,395 @@
+/*
+ * QEMU block throttling filter driver infrastructure
+ *
+ * Copyright (c) 2017 Manos Pitsidi
This is needed to configure throttle filter driver nodes with QAPI.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
qapi/block-core.json | 20 +++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/qapi/block-core.json b/qapi/block-core.json
This proposal follows a discussion we had with Kevin and Stefan on
filter node management.
With block filter drivers arises a need to configure filter nodes on
runtime with QMP on live graphs. A problem with doing live graph
modifications is that some block jobs modify the graph when they are
On Tue, Jul 25, 2017 at 05:09:41PM +0100, Stefan Hajnoczi wrote:
On Tue, Jul 25, 2017 at 01:29:08PM +0300, Manos Pitsidianakis wrote:
On Mon, Jul 24, 2017 at 04:12:47PM +0100, Stefan Hajnoczi wrote:
> On Fri, Jul 14, 2017 at 12:45:18PM +0300, Manos Pitsidianakis wrote:
> > Thro
On Mon, Jul 24, 2017 at 04:12:47PM +0100, Stefan Hajnoczi wrote:
On Fri, Jul 14, 2017 at 12:45:18PM +0300, Manos Pitsidianakis wrote:
ThrottleGroup is converted to an object. This will allow the future
throttle block filter drive easy creation and configuration of throttle
groups in QMP and cli
ting README that ./check runs just the raw
format but it might be a good idea to mention that it's the default in
the Howto as well. For this patch though:
Reviewed-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
While we're on the topic of qemu-iotests, it'd be a nice thing to
parallelize the tests with a Makefile.
signature.asc
Description: PGP signature
patch is
not in the list archives either).
Reviewed-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
signature.asc
Description: PGP signature
On Fri, Jul 14, 2017 at 12:45:19PM +0300, Manos Pitsidianakis wrote:
+static BlockDriver bdrv_throttle = {
+.format_name= "throttle",
+.protocol_name = "throttle",
+.instance_size = sizeof
On Fri, Jul 14, 2017 at 09:42:22AM -0500, Eric Blake wrote:
On 07/14/2017 09:35 AM, Manos Pitsidianakis wrote:
In some error paths it is possible to QDECREF a freed dangling
explicit_options, resulting in a heap overflow crash. For example
bdrv_open_inherit()'s fail unrefs it, then calls
If open succeeds but we fail after, return the error and let callers
unref and delete their bs, while cleaning up their allocations.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block.c | 24
1 file changed, 12 insertions(+), 12 deletions(-)
diff -
In some error paths it is possible to QDECREF a freed dangling
explicit_options, resulting in a heap overflow crash. For example
bdrv_open_inherit()'s fail unrefs it, then calls bdrv_unref which calls
bdrv_close which also unrefs it.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua
v3:
new commit: block: fix dangling bs->explicit_options in block.c
rework error paths in bdrv_open_driver()
v2:
move bdrv_unref_child(bs, bs->file) to bdrv_open_driver
do not set bs->drv to NULL if open succeeds
Manos Pitsidianakis (2):
block: fix dangling bs->explicit_option
On Fri, Jul 14, 2017 at 03:15:06PM +0200, Pradeep Jagadeesh wrote:
Hi Manos,
Thanks for sharing the link to your code patch.
On 7/14/2017 2:22 PM, Manos Pitsidianakis wrote:
Hello Pradeep, you might be interested in my work on refactoring the
block layer's throttling interface in my series
Hello Pradeep, you might be interested in my work on refactoring the
block layer's throttling interface in my series:
https://lists.nongnu.org/archive/html/qemu-devel/2017-07/msg04191.html
In this series you copy the existing legacy interface we want to get rid
of. I think it will be easier
{
"iops-total" : 99
}
}
}
This also means a group's configuration can be fetched with qom-get.
ThrottleGroups can be anonymous which means they can't get accessed by
other users ie they will always be units instead of group (Because they
have one ThrottleGroupMe
-obj-y += throttle.o
block-obj-y += crypto.o
diff --git a/block/throttle.c b/block/throttle.c
new file mode 100644
index 00..5665ccd8b5
--- /dev/null
+++ b/block/throttle.c
@@ -0,0 +1,345 @@
+/*
+ * QEMU block throttling filter driver infrastructure
+ *
+ * Copyright (c) 2017 Manos Pitsidi
. This is done by gathering ThrottleGroup membership
details from BlockBackendPublic into ThrottleGroupMember and refactoring
existing code to use the structure.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
Notes:
Dropped R-b because I changed some of the comments (remov
timer_cb() needs to know about the current Aio context of the throttle
request that is woken up. In order to make ThrottleGroupMember backend
agnostic, this information is stored in an aio_context field instead of
accessing it from BlockBackend.
Signed-off-by: Manos Pitsidianakis <e
configurations (throttling at any point in the graph, chained filters)
There's also the question of how filter drivers affect the rest of the block
layer, especially live block jobs. This won't be tackled in this series though.
Manos Pitsidianakis (7):
block: move ThrottleGroup membership
This is needed to configure throttle filter driver nodes with QAPI.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
qapi/block-core.json | 20 +++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/qapi/block-core.json b/qapi/block-core.json
Move the CoMutex and CoQueue inits inside throttle_group_register_tgm()
which is called whenever a ThrottleGroupMember is initialized. There's
no need for them to be separate.
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/block-backend.c | 3 ---
block/throttle-gr
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
tests/qemu-iotests/184 | 237 +
tests/qemu-iotests/184.out | 319 +
tests/qemu-iotests/group | 1 +
3 files changed, 557 insertions(+)
creat
d-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/blkdebug.c | 8 +---
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/block/blkdebug.c b/block/blkdebug.c
index c19ab28f07..91ffd1fe12 100644
--- a/bloc
i <stefa...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block.c | 14 --
block/raw-format.c| 6 --
include/block/block.h | 1 -
include/block/block_int.h | 1 -
4 files changed, 22 deletions(-)
diff --git a/
octl()
new patch: remove duplicate code from block/raw-format.c
Manos Pitsidianakis (4):
block: pass bdrv_* methods to bs->file by default in block filters
block: remove unused bdrv_media_changed
block: remove bdrv_truncate callback in blkdebug
block: add default implementations for bdr
edhat.com>
Reviewed-by: Eric Blake <ebl...@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>
Signed-off-by: Manos Pitsidianakis <el13...@mail.ntua.gr>
---
block/blkdebug.c | 12 +---
block/commit.c
501 - 600 of 689 matches
Mail list logo