]> Git Repo - qemu.git/commit - include/qemu/throttle.h
block: convert ThrottleGroup to object with QOM
authorManos Pitsidianakis <[email protected]>
Fri, 25 Aug 2017 13:20:26 +0000 (16:20 +0300)
committerKevin Wolf <[email protected]>
Tue, 5 Sep 2017 16:12:21 +0000 (18:12 +0200)
commit432d889e55e2614bd0e8bb559af18a61ac217565
treee5ea15da8af7dd17a61903496924dc4c0807fa44
parentf738cfc843055238ad969782db69156929873832
block: convert ThrottleGroup to object with QOM

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.

A new QAPI struct, ThrottleLimits, is introduced to provide a shared
struct for all throttle configuration needs in QMP.

ThrottleGroups can be created via CLI as
    -object throttle-group,id=foo,x-iops-total=100,x-..
where x-* are individual limit properties. Since we can't add non-scalar
properties in -object this interface must be used instead. However,
setting these properties must be disabled after initialization because
certain combinations of limits are forbidden and thus configuration
changes should be done in one transaction. The individual properties
will go away when support for non-scalar values in CLI is implemented
and thus are marked as experimental.

ThrottleGroup also has a `limits` property that uses the ThrottleLimits
struct.  It can be used to create ThrottleGroups or set the
configuration in existing groups as follows:

{ "execute": "object-add",
  "arguments": {
    "qom-type": "throttle-group",
    "id": "foo",
    "props" : {
      "limits": {
          "iops-total": 100
      }
    }
  }
}
{ "execute" : "qom-set",
    "arguments" : {
        "path" : "foo",
        "property" : "limits",
        "value" : {
            "iops-total" : 99
        }
    }
}

This also means a group's configuration can be fetched with qom-get.

Signed-off-by: Manos Pitsidianakis <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
block/throttle-groups.c
include/block/throttle-groups.h
include/qemu/throttle-options.h
include/qemu/throttle.h
qapi/block-core.json
tests/test-throttle.c
util/throttle.c
This page took 0.029187 seconds and 4 git commands to generate.