usr/src/uts/common/io/scsi/adapters/scsi_vhci/fops/sym.c
author Mark J. Nelson <Mark.J.Nelson@Sun.COM>
Wed, 06 Aug 2008 16:29:39 -0600
changeset 7298 b69e27387f74
parent 4851 5e98cf4c2164
child 7878 da545a376610
permissions -rw-r--r--
6733918 Teamware has retired, please welcome your new manager, Mercurial 4758439 some files use "current date" sccs keywords 6560843 asm sources should not rely on .file "%M%" for naming STT_FILE symbols 6560958 Solaris:: perl modules should not use SCCS keywords in version information 6729074 webrev doesn't deal well with remote ssh hg parents
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4851
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     1
/*
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     2
 * CDDL HEADER START
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     3
 *
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     5
 * Common Development and Distribution License (the "License").
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     6
 * You may not use this file except in compliance with the License.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     7
 *
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    11
 * and limitations under the License.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    12
 *
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    18
 *
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    19
 * CDDL HEADER END
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    20
 */
7298
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 4851
diff changeset
    21
4851
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    22
/*
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    23
 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    24
 * Use is subject to license terms.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    25
 */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    26
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    27
/*
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    28
 * Implementation of "scsi_vhci_f_sym" symmetric failover_ops.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    29
 *
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    30
 * This file was historically meant for only symmetric implementation.  It has
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    31
 * been extended to manage SUN "supported" symmetric controllers. The supported
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    32
 * VID/PID shall be listed in the symmetric_dev_table.
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    33
 */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    34
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    35
#include <sys/conf.h>
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    36
#include <sys/file.h>
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    37
#include <sys/ddi.h>
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    38
#include <sys/sunddi.h>
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    39
#include <sys/scsi/scsi.h>
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    40
#include <sys/scsi/adapters/scsi_vhci.h>
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    41
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    42
/* Supported device table entries.  */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    43
char *symmetric_dev_table[] = {
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    44
/*	"                  111111" */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    45
/*	"012345670123456789012345" */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    46
/*	"|-VID--||-----PID------|" */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    47
				/* disks */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    48
	"IBM     DDYFT",
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    49
	"IBM     IC",
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    50
	"SEAGATE ST",
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    51
				/* enclosures */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    52
	"SUN     SENA",			/* SES device */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    53
	"SUN     SESS01",		/* VICOM SVE box */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    54
	"SUNW    SUNWGS",		/* Daktari enclosure */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    55
				/* arrays */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    56
	"HITACHI OPEN",			/* Hitachi storage */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    57
	"SUN     PSX1000",		/* Pirus Matterhorn */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    58
	"SUN     SE6920",		/* Pirus */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    59
	"SUN     SE6940",		/* DSP - Nauset */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    60
	"SUN     StorEdge 3510",	/* Minnow FC */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    61
	"SUN     StorEdge 3511",	/* Minnow SATA RAID */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    62
	"SUN     StorageTek 6920",	/* DSP */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    63
	"SUN     StorageTek 6940",	/* DSP - Nauset */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    64
	"SUN     StorageTek NAS",	/* StorageTek NAS */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    65
	"SUN     MRA300_R",		/* Shamrock - Controller */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    66
	"SUN     MRA300_E",		/* Shamrock - Expansion */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    67
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    68
	NULL
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    69
};
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    70
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    71
/* Failover module plumbing. */
7298
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 4851
diff changeset
    72
SCSI_FAILOVER_OP(SFO_NAME_SYM, symmetric);
4851
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    73
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    74
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    75
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    76
symmetric_device_probe(struct scsi_device *sd, struct scsi_inquiry *stdinq,
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    77
void **ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    78
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    79
	char	**dt;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    80
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    81
	VHCI_DEBUG(6, (CE_NOTE, NULL, "!inq str: %s\n", stdinq->inq_vid));
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    82
	for (dt = symmetric_dev_table; *dt; dt++)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    83
		if (strncmp(stdinq->inq_vid, *dt, strlen(*dt)) == 0)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    84
			return (SFO_DEVICE_PROBE_VHCI);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    85
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    86
	/*
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    87
	 * No match, check for generic Sun supported disks:
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    88
	 *
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    89
	 *	"|-VID--||-----PID------|"
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    90
	 *	"012345670123456789012345"
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    91
	 *	".................SUN..G."
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    92
	 *	".................SUN..T."
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    93
	 *	".................SUN...G"
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    94
	 *	".................SUN...T"
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    95
	 */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    96
	if (bcmp(&stdinq->inq_pid[9], "SUN", 3) == 0) {
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    97
		if ((stdinq->inq_pid[14] == 'G' || stdinq->inq_pid[15] == 'G' ||
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    98
		    stdinq->inq_pid[14] == 'T' || stdinq->inq_pid[15] == 'T') &&
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
    99
		    (stdinq->inq_dtype == DTYPE_DIRECT)) {
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   100
			return (SFO_DEVICE_PROBE_VHCI);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   101
		}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   102
	}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   103
	return (SFO_DEVICE_PROBE_PHCI);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   104
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   105
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   106
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   107
static void
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   108
symmetric_device_unprobe(struct scsi_device *sd, void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   109
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   110
	/*
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   111
	 * NOP for symmetric
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   112
	 */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   113
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   114
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   115
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   116
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   117
symmetric_path_activate(struct scsi_device *sd, char *pathclass, void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   118
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   119
	return (0);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   120
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   121
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   122
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   123
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   124
symmetric_path_deactivate(struct scsi_device *sd, char *pathclass,
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   125
void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   126
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   127
	return (0);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   128
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   129
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   130
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   131
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   132
symmetric_path_get_opinfo(struct scsi_device *sd,
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   133
struct scsi_path_opinfo *opinfo, void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   134
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   135
	opinfo->opinfo_rev = OPINFO_REV;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   136
	(void) strcpy(opinfo->opinfo_path_attr, "primary");
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   137
	opinfo->opinfo_path_state  = SCSI_PATH_ACTIVE;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   138
	opinfo->opinfo_pswtch_best = 0;		/* N/A */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   139
	opinfo->opinfo_pswtch_worst = 0;	/* N/A */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   140
	opinfo->opinfo_xlf_capable = 0;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   141
	opinfo->opinfo_mode = SCSI_NO_FAILOVER;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   142
	opinfo->opinfo_preferred = 1;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   143
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   144
	return (0);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   145
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   146
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   147
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   148
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   149
symmetric_path_ping(struct scsi_device *sd, void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   150
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   151
	return (1);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   152
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   153
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   154
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   155
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   156
symmetric_analyze_sense(struct scsi_device *sd,
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   157
struct scsi_extended_sense *sense, void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   158
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   159
	return (SCSI_SENSE_NOFAILOVER);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   160
}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   161
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   162
/* ARGSUSED */
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   163
static int
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   164
symmetric_pathclass_next(char *cur, char **nxt, void *ctpriv)
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   165
{
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   166
	if (cur == NULL) {
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   167
		*nxt = PCLASS_PRIMARY;
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   168
		return (0);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   169
	} else if (strcmp(cur, PCLASS_PRIMARY) == 0) {
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   170
		return (ENOENT);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   171
	} else {
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   172
		return (EINVAL);
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   173
	}
5e98cf4c2164 PSARC 2006/708 ddi-forceload
cth
parents:
diff changeset
   174
}