mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-07-11 12:25:52 +00:00
Format FS pools on creation
Create the filesystem on the partition used by the pool * configure.ac: check for mkfs availability * libvirt.spec.in: add extra require on util-linux for mkfs * src/storage/storage_backend_fs.c: run mkfs with the expected fs type when creating a filesystem pool
This commit is contained in:
parent
9ad255f975
commit
b738016b78
2
.gnulib
2
.gnulib
@ -1 +1 @@
|
|||||||
Subproject commit 2709233ead439b582d82af48bd25e709378cda44
|
Subproject commit 11fbc57405a118e6ec9a3ebc19bbf5ececdae4d6
|
@ -1252,12 +1252,15 @@ AM_CONDITIONAL([WITH_STORAGE_DIR], [test "$with_storage_dir" = "yes"])
|
|||||||
if test "$with_storage_fs" = "yes" -o "$with_storage_fs" = "check"; then
|
if test "$with_storage_fs" = "yes" -o "$with_storage_fs" = "check"; then
|
||||||
AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin])
|
AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin])
|
||||||
AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin])
|
AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin])
|
||||||
|
AC_PATH_PROG([MKFS], [mkfs], [], [$PATH:/sbin:/usr/sbin])
|
||||||
if test "$with_storage_fs" = "yes" ; then
|
if test "$with_storage_fs" = "yes" ; then
|
||||||
if test -z "$MOUNT" ; then AC_MSG_ERROR([We need mount for FS storage driver]) ; fi
|
if test -z "$MOUNT" ; then AC_MSG_ERROR([We need mount for FS storage driver]) ; fi
|
||||||
if test -z "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi
|
if test -z "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi
|
||||||
|
if test -z "$MKFS" ; then AC_MSG_ERROR([We need mkfs for FS storage driver]) ; fi
|
||||||
else
|
else
|
||||||
if test -z "$MOUNT" ; then with_storage_fs=no ; fi
|
if test -z "$MOUNT" ; then with_storage_fs=no ; fi
|
||||||
if test -z "$UMOUNT" ; then with_storage_fs=no ; fi
|
if test -z "$UMOUNT" ; then with_storage_fs=no ; fi
|
||||||
|
if test -z "$MKFS" ; then with_storage_fs=no ; fi
|
||||||
|
|
||||||
if test "$with_storage_fs" = "check" ; then with_storage_fs=yes ; fi
|
if test "$with_storage_fs" = "check" ; then with_storage_fs=yes ; fi
|
||||||
fi
|
fi
|
||||||
@ -1268,6 +1271,8 @@ if test "$with_storage_fs" = "yes" -o "$with_storage_fs" = "check"; then
|
|||||||
[Location or name of the mount program])
|
[Location or name of the mount program])
|
||||||
AC_DEFINE_UNQUOTED([UMOUNT],["$UMOUNT"],
|
AC_DEFINE_UNQUOTED([UMOUNT],["$UMOUNT"],
|
||||||
[Location or name of the mount program])
|
[Location or name of the mount program])
|
||||||
|
AC_DEFINE_UNQUOTED([MKFS],["$MKFS"],
|
||||||
|
[Location or name of the mkfs program])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"])
|
AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"])
|
||||||
|
@ -209,6 +209,8 @@ BuildRequires: util-linux
|
|||||||
# For showmount in FS driver (netfs discovery)
|
# For showmount in FS driver (netfs discovery)
|
||||||
BuildRequires: nfs-utils
|
BuildRequires: nfs-utils
|
||||||
Requires: nfs-utils
|
Requires: nfs-utils
|
||||||
|
# For mkfs
|
||||||
|
Requires: util-linux
|
||||||
# For glusterfs
|
# For glusterfs
|
||||||
%if 0%{?fedora} >= 11
|
%if 0%{?fedora} >= 11
|
||||||
Requires: glusterfs-client >= 2.0.1
|
Requires: glusterfs-client >= 2.0.1
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "xml.h"
|
#include "xml.h"
|
||||||
|
#include "logging.h"
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_STORAGE
|
#define VIR_FROM_THIS VIR_FROM_STORAGE
|
||||||
|
|
||||||
@ -500,6 +501,7 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||||||
virStoragePoolObjPtr pool,
|
virStoragePoolObjPtr pool,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED)
|
unsigned int flags ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
|
const char *mke2fsargv[5], *device = NULL, *format = NULL;
|
||||||
int err, ret = -1;
|
int err, ret = -1;
|
||||||
char *parent;
|
char *parent;
|
||||||
char *p;
|
char *p;
|
||||||
@ -540,6 +542,26 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||||||
pool->def->target.path);
|
pool->def->target.path);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
device = pool->def->source.devices[0].path;
|
||||||
|
format = virStoragePoolFormatFileSystemTypeToString(pool->def->source.format);
|
||||||
|
|
||||||
|
VIR_DEBUG("source device: '%s' format: '%s'", device, format);
|
||||||
|
|
||||||
|
mke2fsargv[0] = MKFS;
|
||||||
|
mke2fsargv[1] = "-t";
|
||||||
|
mke2fsargv[2] = format;
|
||||||
|
mke2fsargv[3] = device;
|
||||||
|
mke2fsargv[4] = NULL;
|
||||||
|
|
||||||
|
if (virRun(mke2fsargv, NULL) < 0) {
|
||||||
|
virReportSystemError(errno,
|
||||||
|
_("Failed to make filesystem of "
|
||||||
|
"type '%s' on device '%s'"),
|
||||||
|
format, device);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
error:
|
error:
|
||||||
VIR_FREE(parent);
|
VIR_FREE(parent);
|
||||||
|
Loading…
Reference in New Issue
Block a user