提交 7bdf459d 编写于 作者: L Laine Stump

qemu: use new virCommandSetMax(Processes|Files)

These were previously being set in a custom hook function, but now
that virCommand directly supports setting them, we can eliminate that
part of the hook and call the APIs directly.
上级 776d49f4
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
#include <unistd.h> #include <unistd.h>
#include <signal.h> #include <signal.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/time.h>
#include <sys/resource.h>
#if defined(__linux__) #if defined(__linux__)
# include <linux/capability.h> # include <linux/capability.h>
#elif defined(__FreeBSD__) #elif defined(__FreeBSD__)
...@@ -2453,37 +2451,6 @@ qemuProcessPrepareChardevDevice(virDomainDefPtr def ATTRIBUTE_UNUSED, ...@@ -2453,37 +2451,6 @@ qemuProcessPrepareChardevDevice(virDomainDefPtr def ATTRIBUTE_UNUSED,
} }
static int
qemuProcessLimits(virQEMUDriverConfigPtr cfg)
{
struct rlimit rlim;
if (cfg->maxProcesses > 0) {
rlim.rlim_cur = rlim.rlim_max = cfg->maxProcesses;
if (setrlimit(RLIMIT_NPROC, &rlim) < 0) {
virReportSystemError(errno,
_("cannot limit number of processes to %d"),
cfg->maxProcesses);
return -1;
}
}
if (cfg->maxFiles > 0) {
/* Max number of opened files is one greater than
* actual limit. See man setrlimit */
rlim.rlim_cur = rlim.rlim_max = cfg->maxFiles + 1;
if (setrlimit(RLIMIT_NOFILE, &rlim) < 0) {
virReportSystemError(errno,
_("cannot set max opened files to %d"),
cfg->maxFiles);
return -1;
}
}
return 0;
}
struct qemuProcessHookData { struct qemuProcessHookData {
virConnectPtr conn; virConnectPtr conn;
virDomainObjPtr vm; virDomainObjPtr vm;
...@@ -2526,9 +2493,6 @@ static int qemuProcessHook(void *data) ...@@ -2526,9 +2493,6 @@ static int qemuProcessHook(void *data)
if (virSecurityManagerClearSocketLabel(h->driver->securityManager, h->vm->def) < 0) if (virSecurityManagerClearSocketLabel(h->driver->securityManager, h->vm->def) < 0)
goto cleanup; goto cleanup;
if (qemuProcessLimits(h->cfg) < 0)
goto cleanup;
/* This must take place before exec(), so that all QEMU /* This must take place before exec(), so that all QEMU
* memory allocation is on the correct NUMA node * memory allocation is on the correct NUMA node
*/ */
...@@ -3697,6 +3661,8 @@ int qemuProcessStart(virConnectPtr conn, ...@@ -3697,6 +3661,8 @@ int qemuProcessStart(virConnectPtr conn,
} }
virCommandSetPreExecHook(cmd, qemuProcessHook, &hookData); virCommandSetPreExecHook(cmd, qemuProcessHook, &hookData);
virCommandSetMaxProcesses(cmd, cfg->maxProcesses);
virCommandSetMaxFiles(cmd, cfg->maxFiles);
VIR_DEBUG("Setting up security labelling"); VIR_DEBUG("Setting up security labelling");
if (virSecurityManagerSetChildProcessLabel(driver->securityManager, if (virSecurityManagerSetChildProcessLabel(driver->securityManager,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册