]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-08-01 Robert Millan <rmh@gnu.org>
authorRobert Millan <rmh@aybabtu.com>
Sun, 1 Aug 2010 21:12:24 +0000 (23:12 +0200)
committerRobert Millan <rmh@aybabtu.com>
Sun, 1 Aug 2010 21:12:24 +0000 (23:12 +0200)
Make it even harder to use uninitialized `libzfs_handle' (and
make the interface a bit simpler).

* include/grub/util/misc.h (grub_util_init_libzfs)
(libzfs_handle): Remove.
(grub_get_libzfs_handle): New prototype.

* util/misc.c [HAVE_LIBZFS] (libzfs_handle): Add `static'
attribute.
(grub_util_init_libzfs): Remove.
(grub_get_libzfs_handle): New function.

* kern/emu/getroot.c (find_root_device_from_libzfs): Use
grub_get_libzfs_handle() to obtain a libzfs handle instead of
accessing `libzfs_handle' directly.

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

index 2956129b3332be2f09ab252fef488311bbeb1a3d..d4a63c4ec545c06ace1a94d508fa17e43613864d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2010-08-01  Robert Millan  <rmh@gnu.org>
+
+       Make it even harder to use uninitialized `libzfs_handle' (and
+       make the interface a bit simpler).
+
+       * include/grub/util/misc.h (grub_util_init_libzfs)
+       (libzfs_handle): Remove.
+       (grub_get_libzfs_handle): New prototype.
+
+       * util/misc.c [HAVE_LIBZFS] (libzfs_handle): Add `static'
+       attribute.
+       (grub_util_init_libzfs): Remove.
+       (grub_get_libzfs_handle): New function.
+
+       * kern/emu/getroot.c (find_root_device_from_libzfs): Use
+       grub_get_libzfs_handle() to obtain a libzfs handle instead of
+       accessing `libzfs_handle' directly.
+
 2010-08-01  Robert Millan  <rmh@gnu.org>
 
        * include/grub/emu/misc.h (grub_find_mount_point_from_dir)
index 3614c79c2bc5b07442e6a6733928000d57d42900..7ce3d329196e674e86dc3c8eef27e666c47d18c7 100644 (file)
@@ -61,7 +61,6 @@ char *canonicalize_file_name (const char *path);
 
 void grub_util_init_nls (void);
 
-void grub_util_init_libzfs (void);
-extern libzfs_handle_t *libzfs_handle;
+libzfs_handle_t *grub_get_libzfs_handle (void);
 
 #endif /* ! GRUB_UTIL_MISC_HEADER */
index 32044536da72149a3dd2a2218e421c5edf6b8103..ee6e1c7bad3f159b698806601c3ad76858f58ea6 100644 (file)
@@ -197,9 +197,7 @@ find_root_device_from_libzfs (const char *dir)
     nvlist_t **nvlist_array;
     unsigned int nvlist_count;
 
-    grub_util_init_libzfs ();
-
-    zpool = zpool_open (libzfs_handle, poolname);
+    zpool = zpool_open (grub_get_libzfs_handle (), poolname);
     nvlist = zpool_get_config (zpool, NULL);
 
     if (nvlist_lookup_nvlist (nvlist, "vdev_tree", &nvlist) != 0)
index 2eff256bfd84794ce5724ecb0ff1273d2bee9dec..274c182c23229467ccd1bb7a6a3a36dc97cce6f9 100644 (file)
@@ -296,27 +296,27 @@ grub_util_init_nls (void)
 }
 
 #ifdef HAVE_LIBZFS
-libzfs_handle_t *libzfs_handle;
+static libzfs_handle_t *libzfs_handle;
 
 static void
 fini_libzfs (void)
 {
   libzfs_fini (libzfs_handle);
 }
-#endif
 
-void
-grub_util_init_libzfs (void)
+libzfs_handle_t *
+grub_get_libzfs_handle (void)
 {
-#ifdef HAVE_LIBZFS
   if (! libzfs_handle)
     {
       libzfs_handle = libzfs_init ();
       atexit (fini_libzfs);
     }
-#endif
+
+  return libzfs_handle;
 }
-#endif
+#endif /* HAVE_LIBZFS */
+#endif /* GRUB_UTIL */
 
 int
 grub_dl_ref (grub_dl_t mod)