2010-07-30 Robert Millan <rmh@gnu.org>
Enable `grub-probe -t device' resolution on ZFS. * configure.ac: Check for getfsstat(), libzfs and libnvpair. * include/grub/util/libnvpair.h: New file. * include/grub/util/libzfs.h: New file. * kern/emu/getroot.c: Include `<assert.h>' and `<error.h>'. [HAVE_LIBZFS && HAVE_LIBNVPAIR]: Include `<grub/util/libzfs.h>' and `<grub/util/libnvpair.h>'. [HAVE_GETFSSTAT]: Include `<sys/mount.h>'. (find_mount_point_from_dir): New static function. [HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_root_device_from_libzfs): New function. [HAVE_LIBZFS && HAVE_LIBNVPAIR] (grub_guess_root_device): Use find_root_device_from_libzfs() before ressorting to find_root_device(). * include/grub/util/misc.h (grub_util_init_libzfs): New function prototype. * util/misc.c: Include `<grub/util/libzfs.h>'. (grub_util_init_libzfs): New function. [HAVE_LIBZFS] (libzfs_handle): New global variable. [HAVE_LIBZFS] (fini_libzfs): New static function. (grub_util_init_libzfs): New function. * util/grub-probe.c (main): Call grub_util_init_libzfs().
This commit is contained in:
parent
f7790cdd5d
commit
a184f9c801
8 changed files with 285 additions and 1 deletions
20
util/misc.c
20
util/misc.c
|
@ -36,6 +36,7 @@
|
|||
#include <grub/misc.h>
|
||||
#include <grub/cache.h>
|
||||
#include <grub/util/misc.h>
|
||||
#include <grub/util/libzfs.h>
|
||||
#include <grub/mm.h>
|
||||
#include <grub/term.h>
|
||||
#include <grub/time.h>
|
||||
|
@ -293,6 +294,25 @@ grub_util_init_nls (void)
|
|||
textdomain (PACKAGE);
|
||||
#endif /* (defined(ENABLE_NLS) && ENABLE_NLS) */
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBZFS
|
||||
libzfs_handle_t *libzfs_handle;
|
||||
|
||||
static void
|
||||
fini_libzfs (void)
|
||||
{
|
||||
libzfs_fini (libzfs_handle);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
grub_util_init_libzfs (void)
|
||||
{
|
||||
#ifdef HAVE_LIBZFS
|
||||
libzfs_handle = libzfs_init ();
|
||||
atexit (fini_libzfs);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue