mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-28 11:21:44 +03:00
qemu: implement support for Fibre Channel VMID
Based on kernel commit messages the interface is /sys/class/fc/fc_udev_device/appid_store where we need to write the following string "$INODE:$APPID". $INODE is the VM root cgroup inode in hexadecimal and $APPID is user provided string that will be attached to each FC frame for the VM within the cgroup identified by inode and has limit 128 bytes. Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
38b5f4faab
commit
6cbb1865d8
@ -904,6 +904,34 @@ qemuSetupCpuCgroup(virDomainObj *vm)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
qemuSetupCgroupAppid(virDomainObj *vm)
|
||||
{
|
||||
qemuDomainObjPrivate *priv = vm->privateData;
|
||||
int inode = -1;
|
||||
const char *path = "/sys/class/fc/fc_udev_device/appid_store";
|
||||
g_autofree char *appid = NULL;
|
||||
virDomainResourceDef *resource = vm->def->resource;
|
||||
|
||||
if (!resource || !resource->appid)
|
||||
return 0;
|
||||
|
||||
inode = virCgroupGetInode(priv->cgroup);
|
||||
if (inode < 0)
|
||||
return -1;
|
||||
|
||||
appid = g_strdup_printf("%X:%s", inode, resource->appid);
|
||||
|
||||
if (virFileWriteStr(path, appid, 0) < 0) {
|
||||
virReportSystemError(errno,
|
||||
_("Unable to write '%s' to '%s'"), appid, path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
qemuInitCgroup(virDomainObj *vm,
|
||||
size_t nnicindexes,
|
||||
@ -1096,6 +1124,9 @@ qemuSetupCgroup(virDomainObj *vm,
|
||||
if (qemuSetupCpusetCgroup(vm) < 0)
|
||||
return -1;
|
||||
|
||||
if (qemuSetupCgroupAppid(vm) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user