Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Kernel Functions for Driversscsi_reset(9F)


NAME

 scsi_reset - reset a SCSI bus or target

SYNOPSIS

 
#include <sys/scsi/scsi.h>
int scsi_reset(struct scsi_address *ap, int level);

INTERFACE LEVEL

 

Solaris DDI specific (Solaris DDI).

PARAMETERS

 
ap
Pointer to the scsi_address structure.
level
The level of reset required.

DESCRIPTION

 

scsi_reset() asks the host adapter driver to reset the SCSI bus or a SCSI target as specified by level. If level equals RESET_ALL, the SCSI bus is reset. If it equals RESET_TARGET, ap is used to determine the target to be reset.

scsi_reset() asks the host adapter driver to reset the SCSI bus or a SCSI target as specified by level. If level equals RESET_ALL, the SCSI bus is reset. If it equals RESET_TARGET, ap is used to determine the target to be reset.

Note that, at the point when scsi_reset() resets the target (case RESET_TARGET) or the bus (case RESET_ALL), there might be one or more command packets outstanding. That is, packets have been passed to scsi_transport(), and queued or possibly transported, but the commands have not been completed and the target completion routine has not been called for those packets.

The successful call to scsi_reset() has the side effect that any such commands currently outstanding are aborted, at which point the packets are marked with pkt_reason set to CMD_RESET, and the appropriate bit -- either STAT_BUS_RESET or STAT_DEV_RESET -- is set in pkt_statistics. Once thus appropriately marked, the aborted command packets are passed to the target driver command completion routine.

Also note that, at the moment that a thread executing scsi_reset() actually resets the target or the bus, it is possible that a second thread may have already called scsi_transport(), but not yet queued or transported its command. In this case the HBA will not yet have received the second thread's packet and this packet will not be aborted.

RETURN VALUES

 

scsi_reset() returns:

1
Upon success.
0
Upon failure.

CONTEXT

 

scsi_reset() can be called from user or interrupt context.

SEE ALSO

 

tran_reset(9E), tran_reset_notify(9E), scsi_abort(9F)

Writing Device Drivers


SunOS 5.9Go To TopLast Changed 30 Aug 1995

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.