Abstract:
A computer-readable medium having stored thereon executable instructions for performing a method comprising detecting presence of a SATA device in the process of spinning up, and creating a target which comprises default information relating to the SATA device.

Description:
BACKGROUND 
   1. Technical Field 
   The present disclosure relates generally to information handling systems, and more particularly, to improved operation of a device in a foreign domain. 
   2. Background Information 
   As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is an information handling system. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems. 
   An interface may be utilized for making hardware and data connections between any combination and number of devices, non-limiting examples of devices include IHS&#39;s, and components and peripherals therefor, and any combinations thereof. An interface connector refers to one of the pair of mating connectors that comprises an interface. The pair of connectors is sometimes referred to as a receptacle and plug, or female and male connectors, respectively. 
   There exists in the IHS industry a number of interface standards for making connections between any combination and number of devices, non-limiting examples of which include IHS&#39;s, components and peripherals therefore. As a non-limiting example, there exists the Advanced Technology Attachment (ATA) standards and the Small Computer System Interface (SCSI) standards. These standards define both the physical interface and the protocol used to communicate over the physical interface. Both standards have evolved over time through the release of new ATA and SCSI specifications, specifically, the Serial ATA (SATA) specification and the Serial Attached SCSI (SAS) specification. As used throughout this disclosure, reference to ATA, SCSI, SATA and SAS is intended to encompass all versions and releases of the associated specifications. 
   As used herein, a SAS device is a device that complies with the SAS specification and a SATA device is a device that complies with the SATA specification. As an artifact of the current standards, a SAS domain may accommodate both a SAS device and a SATA device. 
   In a SAS domain, both SAS and SATA disk drives may be connected to a RAID controller. The IO controller in the RAID controller implements a translation mechanism between ATA and SCSI command so that the RAID controller can interact with the SATA drive using SCSI commands. After SAS discovery, the RAID controller may send initialization commands to discover the properties of devices that are in the SAS domain. During drive spin up, a SAS drive will respond to commands, and may provide the RAID controller with status information. In contrast, during spin up, a SATA drive will not respond to any commands until spin up is completed. 
   For a SATA drive connected to a RAID controller through a SAS expander, this lack of response from the SATA drive may result in the RAID controller completing the initialization process and failing to discover the SATA drive. This may result in a failed or degraded virtual disk configured on the RAID controller. 
   For a SATA drive directly connected to the RAID controller, this lack of response from the SATA drive may cause delays in the boot process. The I/O controller (“IOC”) must pause its discovery process during the boot process in order to wait for the SATA drive to spin up. 
   SUMMARY 
   The following presents a general summary of some of the many possible embodiments of this disclosure in order to provide a basic understanding of this disclosure. This summary is not an extensive overview of all embodiments of the disclosure. This summary is not intended to identify key or critical elements of the disclosure or to delineate or otherwise limit the scope of the claims. The following summary merely presents some concepts of the disclosure in a general form as a prelude to the more detailed description that follows 
   According to one non-limiting embodiment there is provided a method of operating a RAID controller. The method may include detecting presence of a second domain type device in the process of spinning up in a first domain. The method may also include creating a target that comprises default information relating to the second domain type device. 
   According to another non-limiting embodiment there is provided a RAID controller. The RAID controller may include an I/O processor, an I/O controller in communication with the processor, and firmware. The firmware comprises instructions that when executed may cause the I/O controller or I/O processor to detect presence of a second domain type device in the process of spinning up in a first domain, and/or create a target which comprises default information relating to the second domain type device. 
   According to another embodiment there is provided a computer-readable medium comprising executable instructions for performing a method comprising detecting presence of a second domain type device in the process of spinning up in a first domain, and creating a target which comprises default information relating to the second domain type device. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The following drawings illustrate some of the many possible embodiments of this disclosure in order to provide a basic understanding of this disclosure. These drawings do not provide an extensive overview of all embodiments of this disclosure. These drawings are not intended to identify key or critical elements of the disclosure or to delineate or otherwise limit the scope of the claims. The following drawings merely present some concepts of the disclosure in a general form. Thus, for a detailed understanding of this disclosure, reference should be made to the following detailed description, taken in conjunction with the accompanying drawings, in which like elements have been given like numerals. 
       FIG. 1  is a schematic of a SAS RAID controller model. 
       FIG. 2  there is shown an operational time line for a RAID controller system. 
       FIG. 3  is a schematic representation of a method for operating a controller system. 
       FIG. 4  is a schematic representation of a method for operating a controller system. 
       FIG. 5  is schematic representation of controller logic. 
   

   DETAILED DESCRIPTION 
   For purposes of this disclosure, an embodiment of an Information Handling System (IHS) may include any instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence or data for business, scientific, control, or other purposes. For example, an IHS may be a personal computer, a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The IHS may include random access memory (RAM), one or more processing resources such as a central processing unit (CPU) or hardware or software control logic, ROM, and/or other types of nonvolatile memory. Additional components of the IHS may include one or more disk drives, one or more network ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The IHS may also include one or more buses operable to transmit data communications between the various hardware components. 
   The present disclosure relates broadly to operation of a device in a foreign domain. In a non-limiting embodiment, the present disclosure relates to operation of a SATA device in a SAS domain. This disclosure provides methods, apparatus and products to emulate the response of SATA disk drives to commands during spin up, the time during which the SATA drive is non-responsive to any commands. 
   According to some embodiments of the present disclosure, a RAID controller initializing before all SATA drives behind a SAS expander have completed spin up, will have adequate information about those drives and will therefore not complete initialization before they are spun up. This prevents any virtual disks from being failed or degraded due to missing drives. 
   According to other embodiments of the present disclosure, a RAID controller initializing while directly connected to SATA drives will not be forced to pause the drive discovery process until all SATA drives have completed spin up. Rather, the RAID controller will be able to proceed initializing any other SATA drives that have already spun up. 
   Referring to  FIG. 1 , there is shown a schematic representation of SAS RAID controller system  100 . RAID controller  102  may include I/O processor  103  having RAID firmware  105 . RAID controller  102  may further include I/O controller  106  having IOC firmware  107 , and a plurality of phy  111 , which may be integrated into RAID controller  102  and provides the bridge between the digital and modulated parts of the interface. Any suitable number of SATA drives  142  may be directly connected to RAID controller  102  through phy  111 . Any suitable number of SAS expanders  130  may be connected to RAID controller  102  though phy  111 . Each SAS expander  130  may include one or more phys  131 . Any suitable number of SATA drives  141  may be connected indirectly to RAID controller  102  through SAS expanders  130 . The I/O controller in the RAID controller implements a translation mechanism between ATA and SCSI commands and presents a SCSI target and/or a SCSI logical unit for each attached SATA device, so that the RAID controller can interact with the SATA drive using SCSI commands. 
   Referring to  FIG. 2 , there is shown an operational time line for SAS RAID controller model of  FIG. 1 . This operational time line may also be read in conjunction with the methods shown in  FIGS. 3 and 4  below. Implementation of the methods of the present disclosure may include changes to present STP (“Serial ATA Tunneled Protocol”)/SATA bridges (in SAS expanders and attached to IO controllers), the IO controller and/or IO controller firmware, and RAID controller firmware. 
   At power-on of drives  141  and/or  142 , out of band (OOB) signaling procedure  301  allows for detection of any SATA device  141  or  142  connected directly or indirectly to phy  111 . A SATA drive will not respond to any communications until drive spin up  321  is completed, at which point it may transmit an initial “Register—Device to Host “FIS, or “FIS(32).” Because a SATA drive is incapable of responding, the present disclosure provides step  303  in which the state of phy  111  may be set to indicate the presence of SATA device  141  or  142 . For SATA drives  142  connected directly to local phys  111 , this state indication  305  may take the form of an interrupt that is generated to indicate the presence of SATA drive  142 . For those SATA drives  141  connected through expander  130  this indication  305  may take the form of a BROADCAST (CHANGE)  305 . 
   During RAID controller  102  initialization, IOC firmware  107  may perform a topology discovery  306  that may detect whether or not SATA drives  141  or  142  has completed spin up  321 . The IOC firmware  107  may recognize SATA drives that have not completed spin up and create a pseudo target  302  to expose to the RAID firmware  105 . Pseudo target  302  is required because I/O controller  106  will not have information (vendor, device type and product information) about the attached device  141  or  142  until spin up  321  is completed and commands have been issued to the drives to get this information. In the practice of the present disclosure, a special programmable mode may be implemented for I/O controller  106  where it is assumed that all attached devices are disk drives  141  or  142 . While not always true, this assumption is valid in most RAID environments. 
   As I/O controller  106  continues through discovery process  306 , “not ready” communications may be returned in response to RAID  102  commands. In a non-limiting embodiment, I/O controller  106  may provide emulation for the response to commands from RAID  102  to the pseudo target. If RAID firmware  105  sends any other SCSI commands to the pseudo target as part of its initialization process, I/O controller firmware may respond with CHECK CONDITION Feb. 4, 2001, that is, “NOT READY—LOGICAL UNIT IS IN PROCESS OF BECOMING READY” 
   RAID firmware  105  may issue retries  307  to discover the device until device  141  or  142  actually becomes ready, or a pre-defined timeout expires. 
   In a non-limiting embodiment, I/O controller  106  may maintain pseudo target  302  until notified that SATA drive  141  or  142  is ready. This may occur once SATA drive  141  or  142  completes spin up  321  and transmission  401  of the initial FIS signal occurs. 
   As with state indication  305 , RAID controller  102  may receive this initial FIS signal as a BROADCAST(CHANGE) for devices  141  connected through an expander  130  and as an interrupt for devices  142  directly attached. In a non-limiting example, once IOC firmware  107  has discovered drive  141  or  142  through the normal path, communication  407  of CHECK CONDITION 06/3SF/03 (UNIT ATTENTION—INQUIRY DATA HAS CHANGED) may be made to RAID firmware  105 . RAID firmware  105  may then send another SCSI INQUIRY command  409  and proceed with initialization. 
   Referring now to  FIG. 3  there is shown a schematic representation of a method for operating a controller system. Upon start-up of RAID controller, the OOB procedure  301  may detect presence of a SATA drive. In  303  the state of the phy may be set by the expander or I/O controller to indicate the presence of a device. The assumption may be made that it is a SATA disk drive. In  305  a notification may be generated to indicate the presence of the device. For local devices this notification may be an interrupt. For devices connected through an expander this notification may be BROADCAST(CHANGE). In  306  the I/O controller initiates discovery and may create a pseudo device object (pseudo target) which represents a SATA disk drive. In  307  the device may be emulated and information such as vendor identification (VID), device type and production identification (PID) are defaulted. During device spin up, all commands are returned with “Not Ready.” 
   Referring now to  FIG. 4 , upon completion of device spin up, an initial FIS may be generated in  401 . In  403 , a notification may again be generated. As with step  305  above for local devices this notification is an interrupt. For devices connected through an expander this notification may be BROADCAST(CHANGE). In  405 , the I/O controller initiates discovery and may detect each device for which device state has changed, that is, the device that has completed “spin up.” In  406 , the I/O controller may update device objects for which SATA initialization has been completed, and the target may be updated with valid data rather than with the defaulted VID, device type and PID. In  407 , the IOC may set a status indicating this change has occurred. In  409  ( FIG. 2 ), the RAID controller  102  may receive the status that inquiry data has changed. 
   Referring now to  FIG. 5 , there is shown a schematic representation of RAID controller logic  600 . In  601 , the RAID device may be initialized. In  603 , an inquiry maybe issued to the SATA device that is discovered by the I/O controller. In  605 , a there may be an inquiry to determine if the SATA device is a pseudo device. 
   In  606 , the RAID controller may issue a TUR (Test Unit Ready) or similar command to determine in  607  the ready status of the device. If the device is not ready logic  600  may loop through  623  and  621  until the retries are exhausted, there is a timeout, or the device is finally ready. 
   Once the device is ready, in  611  there may be a response to the TUR indicating that inquiry data has changed. If the data has changed, in  613  there may be an inquiry to get updated information. After obtaining the updated information, in  616  normal device initialization may be completed. 
   In non-limiting embodiments, part or all of the data structures described herein may be stored on one or more information handling system readable media or transmitted in a propagated signal. 
   In non-limiting embodiments, part or all of the methods described herein may be described as instructions for an information handling system, and stored on one or more information handling system readable media or transmitted by a propagated signal. 
   In non-limiting embodiments, an IHS may include IHS readable media having stored thereon instructions for part or all of the methods described herein, which may be executed by the IHS or another IHS. 
   The present disclosure is to be taken as illustrative rather than as limiting the scope or nature of the claims below. Numerous modifications and variations will become apparent to those skilled in the art after studying the disclosure, including use of equivalent functional and/or structural substitutes for elements described herein, use of equivalent functional couplings for couplings described herein, and/or use of equivalent functional actions for actions described herein. Any insubstantial variations are to be considered within the scope of the claims below.