On 10/02/2018 10:44 AM, Pavel Hrdina wrote: > Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> > --- > src/util/vircgroupv2.c | 64 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 64 insertions(+) > > diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c > index 408f7e3eeb..6279072aab 100644 > --- a/src/util/vircgroupv2.c > +++ b/src/util/vircgroupv2.c > @@ -831,6 +831,68 @@ virCgroupV2GetBlkioDeviceReadIops(virCgroupPtr group, > } > > > +static int > +virCgroupV2SetBlkioDeviceWriteIops(virCgroupPtr group, > + const char *path, > + unsigned int wiops) > +{ > + VIR_AUTOFREE(char *) str = NULL; > + VIR_AUTOFREE(char *) blkstr = NULL; > + > + if (!(blkstr = virCgroupGetBlockDevString(path))) > + return -1; > + > + if (wiops == 0) { > + if (virAsprintf(&str, "%swiops=max", blkstr) < 0) > + return -1; > + } else { > + if (virAsprintf(&str, "%swiops=%u", blkstr, wiops) < 0) > + return -1; > + } > + > + return virCgroupSetValueStr(group, > + VIR_CGROUP_CONTROLLER_BLKIO, > + "io.max", > + str); > +} > + > + > +static int > +virCgroupV2GetBlkioDeviceWriteIops(virCgroupPtr group, > + const char *path, > + unsigned int *wiops) > +{ > + VIR_AUTOFREE(char *) str = NULL; > + char *tmp; > + > + if (virCgroupGetValueForBlkDev(group, > + VIR_CGROUP_CONTROLLER_BLKIO, > + "io.max", > + path, > + &str) < 0) { > + return -1; > + } > + > + if (!str) { > + *wiops = 0; > + } else { > + tmp = strstr(str, "wiops="); > + tmp += strlen("wiops="); And again. I am stopping to report this. You get the idea. > + > + if (STREQLEN(tmp, "max", 3)) { > + *wiops = 0; > + } else if (virStrToLong_ui(tmp, NULL, 10, wiops) < 0) { > + virReportError(VIR_ERR_INTERNAL_ERROR, > + _("Unable to parse '%s' as an integer"), > + str); > + return -1; > + } > + } > + > + return 0; > +} > + > + > virCgroupBackend virCgroupV2Backend = { > .type = VIR_CGROUP_BACKEND_TYPE_V2, > > @@ -861,6 +923,8 @@ virCgroupBackend virCgroupV2Backend = { > .getBlkioDeviceWeight = virCgroupV2GetBlkioDeviceWeight, > .setBlkioDeviceReadIops = virCgroupV2SetBlkioDeviceReadIops, > .getBlkioDeviceReadIops = virCgroupV2GetBlkioDeviceReadIops, > + .setBlkioDeviceWriteIops = virCgroupV2SetBlkioDeviceWriteIops, > + .getBlkioDeviceWriteIops = virCgroupV2GetBlkioDeviceWriteIops, > }; > > > ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list