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.
This commit is contained in:
Robert Millan 2010-08-01 23:12:24 +02:00
parent c882acc031
commit f7abdefbdd
4 changed files with 27 additions and 12 deletions

View file

@ -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> 2010-08-01 Robert Millan <rmh@gnu.org>
* include/grub/emu/misc.h (grub_find_mount_point_from_dir) * include/grub/emu/misc.h (grub_find_mount_point_from_dir)

View file

@ -61,7 +61,6 @@ char *canonicalize_file_name (const char *path);
void grub_util_init_nls (void); void grub_util_init_nls (void);
void grub_util_init_libzfs (void); libzfs_handle_t *grub_get_libzfs_handle (void);
extern libzfs_handle_t *libzfs_handle;
#endif /* ! GRUB_UTIL_MISC_HEADER */ #endif /* ! GRUB_UTIL_MISC_HEADER */

View file

@ -197,9 +197,7 @@ find_root_device_from_libzfs (const char *dir)
nvlist_t **nvlist_array; nvlist_t **nvlist_array;
unsigned int nvlist_count; unsigned int nvlist_count;
grub_util_init_libzfs (); zpool = zpool_open (grub_get_libzfs_handle (), poolname);
zpool = zpool_open (libzfs_handle, poolname);
nvlist = zpool_get_config (zpool, NULL); nvlist = zpool_get_config (zpool, NULL);
if (nvlist_lookup_nvlist (nvlist, "vdev_tree", &nvlist) != 0) if (nvlist_lookup_nvlist (nvlist, "vdev_tree", &nvlist) != 0)

View file

@ -296,27 +296,27 @@ grub_util_init_nls (void)
} }
#ifdef HAVE_LIBZFS #ifdef HAVE_LIBZFS
libzfs_handle_t *libzfs_handle; static libzfs_handle_t *libzfs_handle;
static void static void
fini_libzfs (void) fini_libzfs (void)
{ {
libzfs_fini (libzfs_handle); libzfs_fini (libzfs_handle);
} }
#endif
void libzfs_handle_t *
grub_util_init_libzfs (void) grub_get_libzfs_handle (void)
{ {
#ifdef HAVE_LIBZFS
if (! libzfs_handle) if (! libzfs_handle)
{ {
libzfs_handle = libzfs_init (); libzfs_handle = libzfs_init ();
atexit (fini_libzfs); atexit (fini_libzfs);
} }
#endif
return libzfs_handle;
} }
#endif #endif /* HAVE_LIBZFS */
#endif /* GRUB_UTIL */
int int
grub_dl_ref (grub_dl_t mod) grub_dl_ref (grub_dl_t mod)