diff options
author | gw25295 <none@none> | 2008-04-11 18:36:28 -0700 |
---|---|---|
committer | gw25295 <none@none> | 2008-04-11 18:36:28 -0700 |
commit | e7cbe64f7a72dae5cb44f100db60ca88f3313c65 (patch) | |
tree | 778467a6522111f338e4644cc2cb895dcecacee4 /usr/src/lib/libdiskmgt/common/findevs.c | |
parent | f635d46a9872dc5a02bbbd736f2bf18685c2c221 (diff) | |
download | illumos-joyent-e7cbe64f7a72dae5cb44f100db60ca88f3313c65.tar.gz |
PSARC 2006/370 ZFS Boot Support
5008936 ZFS and/or zvol should support dumps
5070124 dumpadm -d /dev/... does not enforce block device requirement for savecore
6521468 ZFS Boot support Phase 2
6553503 bfu can't find 'rootdev' from /etc/vfstab on a zfs root filesystem
6574993 zfs_mountroot() may need to call clkset() to set the boot_time kstat
6633197 zvol should not permit newfs or createpool while it's in use by swap or dump
6661127 zfs_name_valid() does not support ZFS_TYPE_POOL
6684121 The changes to smf scripts for supporting canmount=noauto will cause a boot failure.
--HG--
rename : usr/src/psm/stand/bootblks/zfs/common/debug-zfs.fth => deleted_files/usr/src/psm/stand/bootblks/zfs/common/debug-zfs.fth
rename : usr/src/psm/stand/bootblks/zfs/common/big-zfs.fth => usr/src/psm/stand/bootblks/zfs/common/fs-zfs.fth
Diffstat (limited to 'usr/src/lib/libdiskmgt/common/findevs.c')
-rw-r--r-- | usr/src/lib/libdiskmgt/common/findevs.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/usr/src/lib/libdiskmgt/common/findevs.c b/usr/src/lib/libdiskmgt/common/findevs.c index 42d57d428a..076281693d 100644 --- a/usr/src/lib/libdiskmgt/common/findevs.c +++ b/usr/src/lib/libdiskmgt/common/findevs.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -37,6 +37,7 @@ #include <libgen.h> #include <unistd.h> #include <devid.h> +#include <sys/fs/zfs.h> #include "libdiskmgt.h" #include "disks_private.h" @@ -140,6 +141,7 @@ static int have_disk(struct search_args *args, char *devid, static int is_cluster_disk(di_node_t node, di_minor_t minor); static int is_ctds(char *name); static int is_drive(di_minor_t minor); +static int is_zvol(di_node_t node, di_minor_t minor); static int is_HBA(di_node_t node, di_minor_t minor); static int new_alias(disk_t *diskp, char *kernel_path, char *devlink_path, struct search_args *args); @@ -568,7 +570,8 @@ add_devs(di_node_t node, di_minor_t minor, void *arg) result = DI_WALK_TERMINATE; } - } else if (di_minor_spectype(minor) == S_IFCHR && is_drive(minor)) { + } else if (di_minor_spectype(minor) == S_IFCHR && + (is_drive(minor) || is_zvol(node, minor))) { char *devidstr; char kernel_name[MAXPATHLEN]; disk_t *diskp; @@ -1573,6 +1576,15 @@ is_drive(di_minor_t minor) } static int +is_zvol(di_node_t node, di_minor_t minor) +{ + if ((strncmp(di_node_name(node), ZFS_DRIVER, 3) == 0) && + di_minor_devt(minor)) + return (1); + return (0); +} + +static int is_HBA(di_node_t node, di_minor_t minor) { char *type; |