/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1999,2000,2001,2002,2003,2004,2009 Free Software Foundation, Inc.
*
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* GRUB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
GRUB_MOD_LICENSE ("GPLv3+");
static inline void
print_tabs (int n)
{
int i;
for (i = 0; i < n; i++)
grub_printf (" ");
}
static grub_err_t
{
print_tabs (tab);
grub_xputs (_("State: "));
{
grub_xputs (_("removed "));
isok = 0;
}
{
grub_xputs (_("faulted "));
isok = 0;
}
{
grub_xputs (_("offline "));
isok = 0;
}
grub_xputs (_("degraded "));
if (isok)
grub_xputs (_("online"));
grub_xputs ("\n");
return GRUB_ERR_NONE;
}
static grub_err_t
{
char *type = 0;
if (!type)
{
print_tabs (tab);
return grub_errno;
}
{
char *bootpath = 0;
char *path = 0;
char *devid = 0;
print_tabs (tab);
bootpath =
print_tabs (tab);
if (!bootpath)
else
print_tabs (tab);
if (!path)
else
print_tabs (tab);
if (!devid)
else
return GRUB_ERR_NONE;
}
{
int nelm, i;
print_tabs (tab);
if (nelm <= 0)
{
return GRUB_ERR_NONE;
}
for (i = 0; i < nelm; i++)
{
char *child;
(nvlist, ZPOOL_CONFIG_CHILDREN, i);
print_tabs (tab);
if (!child)
{
continue;
}
}
return GRUB_ERR_NONE;
}
print_tabs (tab);
return GRUB_ERR_NONE;
}
static grub_err_t
char **devid)
{
char *type = 0;
int found;
if (!type)
return grub_errno;
{
&curguid);
{
*bootpath = 0;
*devid = 0;
return GRUB_ERR_NONE;
}
return GRUB_ERR_NONE;
}
{
int nelm, i;
for (i = 0; i < nelm; i++)
{
char *child;
i);
if (! child)
{
return grub_errno;
}
return GRUB_ERR_NONE;
}
}
return GRUB_ERR_NONE;
}
static const char *poolstates[] = {
};
static grub_err_t
char **args)
{
char *devname;
char *nvlist = 0;
char *nv = 0;
char *poolname;
int found;
if (argc < 1)
{
if (devname)
}
else
if (!devname)
return grub_errno;
if (!dev)
return grub_errno;
if (err)
return err;
if (!poolname)
else
found =
if (!found)
else
&pool_state);
if (!found)
else
if (!nv)
else
return GRUB_ERR_NONE;
}
static grub_err_t
char **args)
{
char *devname;
char *nvlist = 0;
char *nv = 0;
char *fsname;
char *bootfs = 0;
char *poolname = 0;
int found;
if (argc < 1)
if (grub_errno)
return grub_errno;
if (!dev)
return grub_errno;
if (fsname)
fsname++;
else
if (!err)
if (err)
{
return err;
}
&devguid);
if (!found)
{
if (!grub_errno)
return grub_errno;
}
if (!poolname)
{
if (!grub_errno)
return grub_errno;
}
{
bootpath ? : "",
devid ? : "",
}
if (!bootfs)
return grub_errno;
if (argc >= 2)
else
return GRUB_ERR_NONE;
}
static grub_err_t
char **args)
{
char *devname = 0;
char *nvlist = 0;
char *nv = 0;
char *bootfs = 0;
char *poolname;
char *bootfsname = 0;
int found;
if (argc < 1)
if (argc >= 2)
{
/* args[0] is the DEVICE name */
{
if (devname)
}
else
}
else /* args[0] is the variable, we'll use root device */
if (grub_errno)
{
return grub_errno;
}
if (!dev)
return grub_errno;
if (!err)
if (err)
{
return err;
}
if (err)
{
return err;
}
if (argc >= 3)
{
&devguid);
if (!found)
{
if (!grub_errno)
return grub_errno;
}
if (!poolname)
{
if (!grub_errno)
return grub_errno;
}
{
bootpath ? : "",
devid ? : "",
if (!bootfs)
{
return grub_errno;
}
}
}
if (argc >= 2)
else
return GRUB_ERR_NONE;
}
{
N_("DEVICE"),
N_("Print ZFS info about DEVICE."));
N_("FILESYSTEM [VARIABLE]"),
N_("Print ZFS-BOOTFSOBJ or set it to VARIABLE"));
N_("VARIABLE or zfs-defaultbootfs DEVICE VARIABLE-A or zfs-defaultbootfs DEVICE VARIABLE-A VARIABLE-B"),
N_("Set default bootfs name of root device or given DEVICE to VARIABLE-A or set default bootfsname to VARIABLE-A and ZFS-BOOTFSOBJ to VARIABLE-B"));
}
{
}