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>
Tue, 29 Mar 2011 19:25:48 +0000 (20:25 +0100)
(cherry picked from commit a0e3b2183733c7440ad017c4ffe361935672339b)

daemon/daemon.h
daemon/ext2.c
daemon/mkfs.c

index 86f1330..e8f29ad 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
@@ -126,6 +126,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 725352e..5ccbc9d 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 3c95512..fa03afe 100644 (file)
@@ -41,13 +41,17 @@ do_mkfs_opts (const char *fstype, const char *device, int blocksize)
   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";