1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * CDDL HEADER START
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * The contents of this file are subject to the terms of the
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * Common Development and Distribution License (the "License").
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * You may not use this file except in compliance with the License.
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * See the License for the specific language governing permissions
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * and limitations under the License.
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * When distributing Covered Code, include this CDDL HEADER in each
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * If applicable, add the following below this CDDL HEADER, with the
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * fields enclosed by brackets "[]" replaced with your own identifying
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * information: Portions Copyright [yyyy] [name of copyright owner]
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * CDDL HEADER END
07332de532a89d32d2d3d633033ac2950756858dChris Liu * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * Implementation of "scsi_vhci_f_sym" symmetric failover_ops.
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * This file was historically meant for only symmetric implementation. It has
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * been extended to manage SUN "supported" symmetric controllers. The supported
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * VID/PID shall be listed in the symmetric_dev_table.
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* Supported device table entries. */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* " 111111" */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* "012345670123456789012345" */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* "|-VID--||-----PID------|" */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth /* disks */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth "IBM DDYFT",
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth "SEAGATE ST",
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth /* enclosures */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth /* arrays */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* Failover module plumbing. */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthsymmetric_device_probe(struct scsi_device *sd, struct scsi_inquiry *stdinq,
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth VHCI_DEBUG(6, (CE_NOTE, NULL, "!inq str: %s\n", stdinq->inq_vid));
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * No match, check for generic Sun supported disks:
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * "|-VID--||-----PID------|"
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * "012345670123456789012345"
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * ".................SUN..G."
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * ".................SUN..T."
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * ".................SUN...G"
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * ".................SUN...T"
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth if ((stdinq->inq_pid[14] == 'G' || stdinq->inq_pid[15] == 'G' ||
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth stdinq->inq_pid[14] == 'T' || stdinq->inq_pid[15] == 'T') &&
cfc4930c5319f14873d497982c6536d82c25c23aYong-Feng Du if (bcmp(&stdinq->inq_vid[0], "ATA ", 8) == 0) {
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthstatic void
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthsymmetric_device_unprobe(struct scsi_device *sd, void *ctpriv)
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth * NOP for symmetric
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthsymmetric_path_activate(struct scsi_device *sd, char *pathclass, void *ctpriv)
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth return (0);
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthsymmetric_path_deactivate(struct scsi_device *sd, char *pathclass,
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth return (0);
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth return (0);
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthsymmetric_path_ping(struct scsi_device *sd, void *ctpriv)
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth return (1);
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth/* ARGSUSED */
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcthsymmetric_pathclass_next(char *cur, char **nxt, void *ctpriv)
1e1ddd6cc98ab5af8293f7ebd132be62900730fdcth return (0);