mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 09:53:10 +00:00
vircgroup.c: add virCgroupSetupBlkioDevice* helpers
The current use of the functions that set and get BlkioDevice attributes is doing a set(), followed by a get() of the same parameter right after. This is done because there is no guarantee that the kernel will accept the desired value given by the set() call, thus we need to execute a get() right after to get the actual value. This patch adds helpers inside vircgroup.c to execute these operations. Next patch will use these helpers to reduce code repetition in LXC and QEMU files. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Signed-off-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
66de1d921e
commit
3118b4ee95
@ -1731,6 +1731,11 @@ virCgroupSetMemoryHardLimit;
|
|||||||
virCgroupSetMemorySoftLimit;
|
virCgroupSetMemorySoftLimit;
|
||||||
virCgroupSetMemSwapHardLimit;
|
virCgroupSetMemSwapHardLimit;
|
||||||
virCgroupSetOwner;
|
virCgroupSetOwner;
|
||||||
|
virCgroupSetupBlkioDeviceReadBps;
|
||||||
|
virCgroupSetupBlkioDeviceReadIops;
|
||||||
|
virCgroupSetupBlkioDeviceWeight;
|
||||||
|
virCgroupSetupBlkioDeviceWriteBps;
|
||||||
|
virCgroupSetupBlkioDeviceWriteIops;
|
||||||
virCgroupSupportsCpuBW;
|
virCgroupSupportsCpuBW;
|
||||||
virCgroupTerminateMachine;
|
virCgroupTerminateMachine;
|
||||||
|
|
||||||
|
@ -3581,3 +3581,88 @@ virCgroupDelThread(virCgroupPtr cgroup,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls virCgroupSetBlkioDeviceWeight() to set up blkio device weight,
|
||||||
|
* then retrieves the actual value set by the kernel with
|
||||||
|
* virCgroupGetBlkioDeviceWeight() in the same @weight pointer.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virCgroupSetupBlkioDeviceWeight(virCgroupPtr cgroup, const char *path,
|
||||||
|
unsigned int *weight)
|
||||||
|
{
|
||||||
|
if (virCgroupSetBlkioDeviceWeight(cgroup, path, *weight) < 0 ||
|
||||||
|
virCgroupGetBlkioDeviceWeight(cgroup, path, weight) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls virCgroupSetBlkioDeviceReadIops() to set up blkio device riops,
|
||||||
|
* then retrieves the actual value set by the kernel with
|
||||||
|
* virCgroupGetBlkioDeviceReadIops() in the same @riops pointer.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virCgroupSetupBlkioDeviceReadIops(virCgroupPtr cgroup, const char *path,
|
||||||
|
unsigned int *riops)
|
||||||
|
{
|
||||||
|
if (virCgroupSetBlkioDeviceReadIops(cgroup, path, *riops) < 0 ||
|
||||||
|
virCgroupGetBlkioDeviceReadIops(cgroup, path, riops) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls virCgroupSetBlkioDeviceWriteIops() to set up blkio device wiops,
|
||||||
|
* then retrieves the actual value set by the kernel with
|
||||||
|
* virCgroupGetBlkioDeviceWriteIops() in the same @wiops pointer.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virCgroupSetupBlkioDeviceWriteIops(virCgroupPtr cgroup, const char *path,
|
||||||
|
unsigned int *wiops)
|
||||||
|
{
|
||||||
|
if (virCgroupSetBlkioDeviceWriteIops(cgroup, path, *wiops) < 0 ||
|
||||||
|
virCgroupGetBlkioDeviceWriteIops(cgroup, path, wiops) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls virCgroupSetBlkioDeviceReadBps() to set up blkio device rbps,
|
||||||
|
* then retrieves the actual value set by the kernel with
|
||||||
|
* virCgroupGetBlkioDeviceReadBps() in the same @rbps pointer.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virCgroupSetupBlkioDeviceReadBps(virCgroupPtr cgroup, const char *path,
|
||||||
|
unsigned long long *rbps)
|
||||||
|
{
|
||||||
|
if (virCgroupSetBlkioDeviceReadBps(cgroup, path, *rbps) < 0 ||
|
||||||
|
virCgroupGetBlkioDeviceReadBps(cgroup, path, rbps) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls virCgroupSetBlkioDeviceWriteBps() to set up blkio device wbps,
|
||||||
|
* then retrieves the actual value set by the kernel with
|
||||||
|
* virCgroupGetBlkioDeviceWriteBps() in the same @wbps pointer.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virCgroupSetupBlkioDeviceWriteBps(virCgroupPtr cgroup, const char *path,
|
||||||
|
unsigned long long *wbps)
|
||||||
|
{
|
||||||
|
if (virCgroupSetBlkioDeviceWriteBps(cgroup, path, *wbps) < 0 ||
|
||||||
|
virCgroupGetBlkioDeviceWriteBps(cgroup, path, wbps) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -175,6 +175,26 @@ int virCgroupGetBlkioDeviceWriteBps(virCgroupPtr group,
|
|||||||
const char *path,
|
const char *path,
|
||||||
unsigned long long *wbps);
|
unsigned long long *wbps);
|
||||||
|
|
||||||
|
int virCgroupSetupBlkioDeviceWeight(virCgroupPtr cgroup,
|
||||||
|
const char *path,
|
||||||
|
unsigned int *weight);
|
||||||
|
|
||||||
|
int virCgroupSetupBlkioDeviceReadIops(virCgroupPtr cgroup,
|
||||||
|
const char *path,
|
||||||
|
unsigned int *riops);
|
||||||
|
|
||||||
|
int virCgroupSetupBlkioDeviceWriteIops(virCgroupPtr cgroup,
|
||||||
|
const char *path,
|
||||||
|
unsigned int *wiops);
|
||||||
|
|
||||||
|
int virCgroupSetupBlkioDeviceReadBps(virCgroupPtr cgroup,
|
||||||
|
const char *path,
|
||||||
|
unsigned long long *rbps);
|
||||||
|
|
||||||
|
int virCgroupSetupBlkioDeviceWriteBps(virCgroupPtr cgroup,
|
||||||
|
const char *path,
|
||||||
|
unsigned long long *wbps);
|
||||||
|
|
||||||
int virCgroupSetMemory(virCgroupPtr group, unsigned long long kb);
|
int virCgroupSetMemory(virCgroupPtr group, unsigned long long kb);
|
||||||
int virCgroupGetMemoryStat(virCgroupPtr group,
|
int virCgroupGetMemoryStat(virCgroupPtr group,
|
||||||
unsigned long long *cache,
|
unsigned long long *cache,
|
||||||
|
Loading…
Reference in New Issue
Block a user