mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 23:07:44 +00:00
util: Refactor code for creating resctrl group
The code for creating resctrl allocation group could be reused for monitoring group, refactor it for reuse in the later patch. Signed-off-by: Wang Huaqiang <huaqiang.wang@intel.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
5a7c336b4a
commit
4f5bc6cc10
@ -2316,6 +2316,26 @@ virResctrlAllocDeterminePath(virResctrlAllocPtr alloc,
|
||||
}
|
||||
|
||||
|
||||
/* This function creates a resctrl directory in resource control file system,
|
||||
* and the directory path is specified by @path. */
|
||||
static int
|
||||
virResctrlCreateGroupPath(const char *path)
|
||||
{
|
||||
/* Directory exists, return */
|
||||
if (virFileExists(path))
|
||||
return 0;
|
||||
|
||||
if (virFileMakePath(path) < 0) {
|
||||
virReportSystemError(errno,
|
||||
_("Cannot create resctrl directory '%s'"),
|
||||
path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* This checks if the directory for the alloc exists. If not it tries to create
|
||||
* it and apply appropriate alloc settings. */
|
||||
int
|
||||
@ -2344,13 +2364,6 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
|
||||
if (STREQ(alloc->path, SYSFS_RESCTRL_PATH))
|
||||
return 0;
|
||||
|
||||
if (virFileExists(alloc->path)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Path '%s' for resctrl allocation exists"),
|
||||
alloc->path);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
lockfd = virResctrlLockWrite();
|
||||
if (lockfd < 0)
|
||||
goto cleanup;
|
||||
@ -2358,6 +2371,9 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
|
||||
if (virResctrlAllocAssign(resctrl, alloc) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virResctrlCreateGroupPath(alloc->path) < 0)
|
||||
goto cleanup;
|
||||
|
||||
alloc_str = virResctrlAllocFormat(alloc);
|
||||
if (!alloc_str)
|
||||
goto cleanup;
|
||||
@ -2365,13 +2381,6 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
|
||||
if (virAsprintf(&schemata_path, "%s/schemata", alloc->path) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virFileMakePath(alloc->path) < 0) {
|
||||
virReportSystemError(errno,
|
||||
_("Cannot create resctrl directory '%s'"),
|
||||
alloc->path);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
VIR_DEBUG("Writing resctrl schemata '%s' into '%s'", alloc_str, schemata_path);
|
||||
if (virFileWriteStr(schemata_path, alloc_str, 0) < 0) {
|
||||
rmdir(alloc->path);
|
||||
|
Loading…
Reference in New Issue
Block a user