[libvirt] [PATCH 1/1] Format FS pools

Daniel Veillard veillard at redhat.com
Wed Feb 24 08:54:23 UTC 2010


On Tue, Feb 23, 2010 at 01:49:46PM -0500, Dave Allan wrote:
> On 02/23/2010 03:15 AM, Daniel Veillard wrote:
> >On Mon, Feb 22, 2010 at 01:44:39PM -0500, David Allan wrote:
> >>* Create the filesystem on the partition used by the pool.
> >>---
> >>  configure.ac                     |    5 +++++
> >>  src/storage/storage_backend_fs.c |   22 ++++++++++++++++++++++
> >>  2 files changed, 27 insertions(+), 0 deletions(-)
> >>
> >>diff --git a/configure.ac b/configure.ac
> >>index 743a357..616bd03 100644
> >>--- a/configure.ac
> >>+++ b/configure.ac
> >>@@ -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
> >>    AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin])
> >>    AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin])
> >>+  AC_PATH_PROG([MKE2FS], [mke2fs], [], [$PATH:/sbin:/usr/sbin])
> >
> >   Actually I think we need to check for mkfs to be filesystem generic
> >
> >>    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 "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi
> >>+    if test -z "$MKE2FS" ; then AC_MSG_ERROR([We need mke2fs for FS storage driver]) ; fi
> >>    else
> >>      if test -z "$MOUNT" ; then with_storage_fs=no ; fi
> >>      if test -z "$UMOUNT" ; then with_storage_fs=no ; fi
> >>+    if test -z "$MKE2FS" ; then with_storage_fs=no ; fi
> >>
> >>      if test "$with_storage_fs" = "check" ; then with_storage_fs=yes ; 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])
> >>      AC_DEFINE_UNQUOTED([UMOUNT],["$UMOUNT"],
> >>          [Location or name of the mount program])
> >>+    AC_DEFINE_UNQUOTED([MKE2FS],["$MKE2FS"],
> >>+        [Location or name of the mke2fs program])
> >>    fi
> >>  fi
> >>  AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"])
> >>diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
> >>index 8279d78..eb5da5e 100644
> >>--- a/src/storage/storage_backend_fs.c
> >>+++ b/src/storage/storage_backend_fs.c
> >>@@ -45,6 +45,7 @@
> >>  #include "util.h"
> >>  #include "memory.h"
> >>  #include "xml.h"
> >>+#include "logging.h"
> >>
> >>  #define VIR_FROM_THIS VIR_FROM_STORAGE
> >>
> >>@@ -500,6 +501,7 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
> >>                                   virStoragePoolObjPtr pool,
> >>                                   unsigned int flags ATTRIBUTE_UNUSED)
> >>  {
> >>+    const char *mke2fsargv[5], *device = NULL, *format = NULL;
> >>      int err, ret = -1;
> >>      char *parent;
> >>      char *p;
> >>@@ -540,6 +542,26 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
> >>                               pool->def->target.path);
> >>          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] = MKE2FS;
> >>+    mke2fsargv[1] = "-t";
> >
> >   mkfs has a -t type argument, not mke2fs on my machine
> >
> >>+    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;
> >>  error:
> >>      VIR_FREE(parent);
> >
> >   So I come up with the following patch instead. Note that /sbin/mkfs
> >is provided by util-linux which is alread required for the storage fs
> >support so we don't need to add anything (BTW util-linux is now provided
> >by util-linux-ng on recent Fedoras, but keeping the old canonical
> >require name is probably better).
> >
> >Daniel
> >
> 
> ACK.  Tested with ext3, ext4 and xfs.

  Okay, pushed :-)

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list