提交 0aedcbd3 编写于 作者: C Cédric Bosdonnat

Load nbd module before running qemu-nbd

So far qemu-nbd is run even if the nbd kernel module isn't loaded. This
leads to errors when the user starts his lxc container while libvirt
could easily load the nbd module automatically.
上级 b2960501
......@@ -63,6 +63,7 @@
#include "vircommand.h"
#include "virerror.h"
#include "virfile.h"
#include "virkmod.h"
#include "virlog.h"
#include "virprocess.h"
#include "virstring.h"
......@@ -745,6 +746,7 @@ int virFileLoopDeviceAssociate(const char *file,
# define SYSFS_BLOCK_DIR "/sys/block"
# define NBD_DRIVER "nbd"
static int
......@@ -811,18 +813,42 @@ virFileNBDDeviceFindUnused(void)
return ret;
}
static bool
virFileNBDLoadDriver(void)
{
if (virKModIsBlacklisted(NBD_DRIVER)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to load nbd module: "
"administratively prohibited"));
return false;
} else {
char *errbuf = NULL;
if ((errbuf = virKModLoad(NBD_DRIVER, true))) {
VIR_FREE(errbuf);
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to load nbd module"));
return false;
}
VIR_FREE(errbuf);
}
return true;
}
int virFileNBDDeviceAssociate(const char *file,
virStorageFileFormat fmt,
bool readonly,
char **dev)
{
char *nbddev;
char *nbddev = NULL;
char *qemunbd = NULL;
virCommandPtr cmd = NULL;
int ret = -1;
const char *fmtstr = NULL;
if (!virFileNBDLoadDriver())
goto cleanup;
if (!(nbddev = virFileNBDDeviceFindUnused()))
goto cleanup;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册