RHEL 5: Use mke4fs on RHEL 5 as replacement for mke2fs.
authorRichard W.M. Jones <rjones@redhat.com>
Fri, 25 Mar 2011 14:42:40 +0000 (14:42 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 25 Mar 2011 14:42:40 +0000 (14:42 +0000)
daemon/daemon.h
daemon/ext2.c
daemon/mkfs.c

index 79f41ae..3a67758 100644 (file)
@@ -1,5 +1,5 @@
 /* libguestfs - the guestfsd daemon
- * Copyright (C) 2009 Red Hat Inc.
+ * Copyright (C) 2009-2011 Red Hat Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -128,6 +128,9 @@ extern struct optgroup optgroups[];
 /* Use this as a replacement for sync(2). */
 extern int sync_disks (void);
 
+/*-- in ext2.c --*/
+extern int e2prog (char *name); /* Massive hack for RHEL 5. */
+
 /*-- in lvm.c --*/
 extern int lv_canonical (const char *device, char **ret);
 
index 85ce316..01a4628 100644 (file)
@@ -39,7 +39,7 @@
  * We specify e4fsprogs in the package list to ensure it is loaded
  * if it exists.
  */
-static int
+int
 e2prog (char *name)
 {
   char *p = strstr (name, "e2");
index ea9fd7f..cd27268 100644 (file)
@@ -41,13 +41,17 @@ do_mkfs_opts (const char *fstype, const char *device, int blocksize, const char
   int r;
   char *err;
 
+  char mke2fs[] = "mke2fs";
+  if (e2prog (mke2fs) == -1)
+    return -1;
+
   /* For ext2/3/4 run the mke2fs program directly.  This is because
    * the mkfs program "eats" some options, in particular the -F
    * option.
    */
   if (STREQ (fstype, "ext2") || STREQ (fstype, "ext3") ||
       STREQ (fstype, "ext4"))
-    argv[i++] = "mke2fs";
+    argv[i++] = mke2fs;
   else
     argv[i++] = "mkfs";