All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jscsi.parser.scsi.SCSIStatus Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2012, University of Konstanz, Distributed Systems Group All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
 * following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation and/or other materials provided with the
 * distribution. * Neither the name of the University of Konstanz nor the names of its contributors may be used to
 * endorse or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.jscsi.parser.scsi;


import java.util.HashMap;
import java.util.Map;


/**
 * 

SCSIStatus

*

* This enumerations defines all valid stati, which are defined in the iSCSI Standard (RFC 3720) and the SCSI * Architecture Model 2 [SAM2]. *

*

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Status CodeStatusTask EndedService Response
00hGOODYesTASK COMPLETE
02hCHECK CONDITIONYesTASK COMPLETE
04hCONDITION METYesTASK COMPLETE
08hBUSYYesTASK COMPLETE
10hINTERMEDIATENoLINKED COMMAND COMPLETE
14hINTERMEDIATE-CONDITION METNoLINKED COMMAND COMPLETE
18hRESERVATION CONFLICTYesTASK COMPLETE
22hObsolete
28hTASK SET FULLYesTASK COMPLETE
30hACA ACTIVEYesTASK COMPLETE
40hTASK ABORTEDYesTASK COMPLETE
*

* All other codes are reserved. * * @author Volker Wildi */ public enum SCSIStatus { /** * This status indicates that the device server has successfully completed the task. */ GOOD((byte) 0x00), /** * This status indicates that an CA or ACA condition has occurred (see 5.9.1). Autosense data may be delivered (see * 5.9.4.3)[SAM2]. */ CHECK_CONDITION((byte) 0x02), /** * This status shall be returned whenever the requested operation specified by an unlinked command is satisfied (see * the PRE-FETCH commands in the SBC standard). */ CONDITION_MET((byte) 0x04), /** * This status indicates that the logical unit is busy. This status shall be returned whenever a logical unit is * temporarily unable to accept a command. The recommended application client recovery action is to issue the * command again at a later time. If the UA_INTLCK_CTRL field in the Control mode page contains 11b (see SPC-3), * termination of a command with BUSY status shall cause an unit attention condition to be established for the SCSI * initiator port that sent the command with an additional sense code of PREVIOUS BUSY STATUS unless a PREVIOUS BUSY * STATUS unit attention condition already exists. */ BUSY((byte) 0x08), /** * This status or INTERMEDIATE-CONDITION MET shall be returned for each successfully completed command in a series * of linked commands (except the last command), unless the command is termi- nated with CHECK CONDITION, * RESERVATION CONFLICT, TASK SET FULL, or BUSY status. If INTERME- DIATE or INTERMEDIATE-CONDITION MET status is * not returned, the series of linked commands is terminated and the task is ended. This status is the equivalent of * GOOD status for linked commands. */ INTERMEDIATE((byte) 0x10), /** * This status is returned whenever the requested operation specified by a linked command is satisfied (see the * PRE-FETCH commands in the SBC standard), unless the command is termi- nated with CHECK CONDITION, RESERVATION * CONFLICT, TASK SET FULL, or BUSY status. If INTERME- DIATE or INTERMEDIATE-CONDITION MET status is not returned, * the series of linked commands is terminated and the task is ended. */ INTERMEDIATE_CONDITION_MET((byte) 0x14), /** * This status shall be returned whenever a SCSI initiator port attempts to access a logical unit or an element of a * logical unit in a way that conflicts with an existing reservation. (See the RESERVE, RELEASE, PERSISTENT RESERVE * OUT and PERSISTENT RESERVE IN commands in SPC-2). *

* If the UA_INTLCK_CTRL field in the Control mode page contains 11b (see SPC-3), termination of a command with * RESERVATION CONFLICT status shall cause an unit attention condition to be established for the SCSI initiator port * that sent the command with an additional sense code of PREVIOUS RESERVATION CONFLICT STATUS unless a PREVIOUS * RESERVATION CONFLICT STATUS unit attention condition already exists. */ RESERVATION_CONFLICT((byte) 0x18), /** * This status shall be implemented if the logical unit supports the creation of tagged tasks (see 4.10)[SAM2]. This * status shall not be implemented if the logical unit does not support the creation of tagged tasks. *

* When the logical unit has at least one task in the task set for a SCSI initiator port and a lack of task set * resources prevents accepting a received tagged task from that SCSI initiator port into the task set, TASK SET * FULL shall be returned. When the logical unit has no task in the task set for a SCSI initiator port and a lack of * task set resources prevents accepting a received tagged task from that SCSI initiator port into the task set, * BUSY should be returned. *

* When the logical unit has at least one task in the task set and a lack of task set resources prevents accepting a * received untagged task into the task set, BUSY should be returned. *

* The logical unit should allow at least one command in the task set for each supported SCSI initiator port that * has identified itself to the SCSI target port by a SCSI transport protocol specific procedure or by the * successful trans- mission of a command. *

* If the UA_INTLCK_CTRL field in the Control mode page contains 11b (see SPC-3), termination of a command with TASK * SET FULL status shall cause an unit attention condition to be established for the SCSI initiator port that sent * the command with an additional sense code of PREVIOUS TASK SET FULL STATUS unless a PREVIOUS TASK SET FULL STATUS * unit attention condition already exists. */ TASK_SET_FULL((byte) 0x28), /** * This status shall be returned when an ACA exists within a task set and a SCSI initiator port issues a command for * that task set when at least one of the following is true: *

    *
  1. There is a task with the ACA attribute (see 7.5.4)[SAM2] in the task set;
  2. *
  3. The SCSI initiator port issuing the command did not cause the ACA condition; or
  4. *
  5. The task created to process the command did not have the ACA attribute and the NACA bit was set to one in the * CDB CONTROL byte of the faulting command (see 5.9.1)[SAM2].
  6. *
* The SCSI initiator port may reissue the command after the ACA condition has been cleared. */ ACA_ACTIVE((byte) 0x30), /** * This status shall be returned when a task is aborted by another SCSI initiator port and the Control mode page TAS * bit is set to one (see 5.7.3)[SAM2]. */ TASK_ABORTED((byte) 0x40); private final byte value; private static Map mapping; static { SCSIStatus.mapping = new HashMap(); for (SCSIStatus s : values()) { SCSIStatus.mapping.put(s.value, s); } } private SCSIStatus (final byte newValue) { value = newValue; } /** * Returns the value of this enumeration. * * @return The value of this enumeration. */ public final byte value () { return value; } /** * Returns the constant defined for the given value. * * @param value The value to search for. * @return The constant defined for the given value. Or null, if this value is not defined * by this enumeration. */ public static final SCSIStatus valueOf (final byte value) { return SCSIStatus.mapping.get(value); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy