]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-08-04 Robert Millan <rmh@gnu.org>
authorRobert Millan <rmh@aybabtu.com>
Wed, 4 Aug 2010 11:29:13 +0000 (13:29 +0200)
committerRobert Millan <rmh@aybabtu.com>
Wed, 4 Aug 2010 11:29:13 +0000 (13:29 +0200)
* include/grub/emu/misc.h (grub_find_mount_point_from_dir)
(grub_find_zpool_from_mount_point): Merge into ...
(grub_find_zpool_from_dir): ... this.
* kern/emu/misc.c: Likewise.

* kern/emu/misc.c
(grub_make_system_path_relative_to_its_root): Replace
grub_find_mount_point_from_dir() / grub_find_zpool_from_mount_point()
with grub_find_zpool_from_dir().
* kern/emu/getroot.c (find_root_device_from_libzfs): Likewise.

ChangeLog
include/grub/emu/misc.h
kern/emu/getroot.c
kern/emu/misc.c

index 958c55c798e3ec34b9ac83f520bc20fdabf01b6f..daa85e4a37ff896b13107b79fe60f4e03d58c8f5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2010-08-04  Robert Millan  <rmh@gnu.org>
+
+       * include/grub/emu/misc.h (grub_find_mount_point_from_dir)
+       (grub_find_zpool_from_mount_point): Merge into ...
+       (grub_find_zpool_from_dir): ... this.
+       * kern/emu/misc.c: Likewise.
+
+       * kern/emu/misc.c
+       (grub_make_system_path_relative_to_its_root): Replace
+       grub_find_mount_point_from_dir() / grub_find_zpool_from_mount_point()
+       with grub_find_zpool_from_dir().
+       * kern/emu/getroot.c (find_root_device_from_libzfs): Likewise.
+
 2010-08-04  Robert Millan  <rmh@gnu.org>
 
        Support OpenSolaris in ZFS device resolution.
index 70cf05e0dc41e327eb5ac26c02abceba5a85a069..ebb81a37f67e5c4737fc2e67735faadd5c9b8d35 100644 (file)
@@ -45,10 +45,8 @@ extern const char *program_name;
 void grub_init_all (void);
 void grub_fini_all (void);
 
-char *grub_find_mount_point_from_dir (const char *dir)
-  __attribute__ ((warn_unused_result));
-void grub_find_zpool_from_mount_point (const char *mnt_point,
-                                      char **poolname, char **poolfs);
+void grub_find_zpool_from_dir (const char *dir,
+                              char **poolname, char **poolfs);
 
 char *grub_make_system_path_relative_to_its_root (const char *path)
   __attribute__ ((warn_unused_result));
index ee6e1c7bad3f159b698806601c3ad76858f58ea6..321b33bb3e593ff387e75c9360a29245ed1f9398 100644 (file)
@@ -181,15 +181,10 @@ find_root_device_from_libzfs (const char *dir)
   char *device;
   char *poolname;
   char *poolfs;
-  char *mnt_point;
 
-  mnt_point = grub_find_mount_point_from_dir (dir);
-  grub_find_zpool_from_mount_point (mnt_point, &poolname, &poolfs);
+  grub_find_zpool_from_dir (dir, &poolname, &poolfs);
   if (! poolname)
-    {
-      free (mnt_point);
-      return NULL;
-    }
+    return NULL;
 
   {
     zpool_handle_t *zpool;
index 5a148c708bb8c468c95c6635fa971de9bb7737d0..de22e3bff8a8a09a239b156f00412d85851231a6 100644 (file)
@@ -277,8 +277,8 @@ grub_get_libzfs_handle (void)
 
 #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
 /* Not ZFS-specific in itself, but for now it's only used by ZFS-related code.  */
-char *
-grub_find_mount_point_from_dir (const char *dir)
+static char *
+find_mount_point_from_dir (const char *dir)
 {
   struct stat st;
   typeof (st.st_dev) fs;
@@ -332,18 +332,18 @@ grub_find_mount_point_from_dir (const char *dir)
        }
     }
 }
-#endif
-
-#if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
 
 /* ZFS has similar problems to those of btrfs (see above).  */
 void
-grub_find_zpool_from_mount_point (const char *mnt_point, char **poolname, char **poolfs)
+grub_find_zpool_from_dir (const char *dir, char **poolname, char **poolfs)
 {
   char *slash;
+  char *mnt_point;
 
   *poolname = *poolfs = NULL;
 
+  mnt_point = find_mount_point_from_dir (dir);
+
 #if defined(HAVE_GETFSSTAT) /* FreeBSD and GNU/kFreeBSD */
   {
     int mnt_count = getfsstat (NULL, 0, MNT_WAIT);
@@ -408,7 +408,7 @@ grub_make_system_path_relative_to_its_root (const char *path)
 {
   struct stat st;
   char *p, *buf, *buf2, *buf3;
-  char *mnt_point, *poolname = NULL, *poolfs = NULL, *ret;
+  char *poolname = NULL, *poolfs = NULL, *ret;
   uintptr_t offset = 0;
   dev_t num;
   size_t len;
@@ -420,12 +420,7 @@ grub_make_system_path_relative_to_its_root (const char *path)
 
 #if defined(HAVE_LIBZFS) && defined(HAVE_LIBNVPAIR)
   /* For ZFS sub-pool filesystems, could be extended to others (btrfs?).  */
-  mnt_point = grub_find_mount_point_from_dir (p);
-  if (mnt_point)
-    {
-      grub_find_zpool_from_mount_point (mnt_point, &poolname, &poolfs);
-      free (mnt_point);
-    }
+  grub_find_zpool_from_dir (p, &poolname, &poolfs);
 #endif
 
   len = strlen (p) + 1;