SAS topology pathway analysis

Methods and systems for configuring network storage are presented.A method for configuring network storage may include: detecting one more connection rates associated with one or more input PHYs associated with one or more parent devices; detecting a number of input connections associated with one or more PHYs associated with one or more parent devices; setting one or more connection rates associated with one or more input PHYs associated with one or more child devices according to the one or more connection rates associated with the one or more input PHYs associated with the one or more parent devices; and setting a number of input connections associated with one or more PHYs associated with one or more child devices according to a number of input connections associated with one or more PHYs associated with one or more parent devices.

BACKGROUND

Pathway analysis functionality provided by the inventive system may determine a maximum number of simultaneous connections a Serial Attached SCSI (SAS) initiator may open to an end-device. This may promote an efficient usage of the SAS infrastructure by eliminating connection attempts that may fail due to the system configuration. Determining the maximum number of connections may include: examining a pathway from an initiator to an end-device. Examining the pathway may include examining a number of physical layers (PHYs) and the rates at which they may be connected to each device along a pathway including multiplexing.

SUMMARY

Methods and systems for configuring a storage network are provided.

In one aspect, a method includes but is not limited to: detecting one more connection rates associated with one or more input PHYs associated with one or more parent devices; detecting a number of input connections associated with one or more PHYs associated with one or more parent devices; setting one or more connection rates associated with one or more input PHYs associated with one or more child devices according to the one or more connection rates associated with the one or more input PHYs associated with the one or more parent devices; and setting a number of input connections associated with one or more PHYs associated with one or more child devices according to a number of input connections associated with one or more PHYs associated with one or more parent devices.

In addition to the foregoing, other method aspects are described in the claims, drawings, and text forming a part of the present disclosure.

In one aspect, a system includes but is not limited to: means for detecting one more connection rates associated with one or more input PHYs associated with one or more parent devices; means for detecting a number of input connections associated with one or more PHYs associated with one or more parent devices; means for setting one or more connection rates associated with one or more input PHYs associated with one or more child devices according to the one or more connection rates associated with the one or more input PHYs associated with the one or more parent devices; and means for setting a number of input connections associated with one or more PHYs associated with one or more child devices according to a number of input connections associated with one or more PHYs associated with one or more parent devices.

In addition to the foregoing, other system aspects are described in the claims, drawings, and text forming a part of the present disclosure.

DETAILED DESCRIPTION

Referring toFIG. 1, a storage system101may include a controller device102connected to one or more end-devices103(e.g. SAS device103A-1and SAS device103A-2). Additional end-devices103(e.g. SAS device103A-3-SAS device103A-6and/or SATA device103B-1-SATA device103B-2) may be connected to the controller device102through the use of expander devices (e.g. SAS expander device104-1-SAS expander device104-3). The controller device102may include detection logic102A for detecting the nature of connections between the controller device102and an end-device103and configuration logic102B for configuring various hardware and/or software structures (e.g. hardware and/or firmware registers102B-1) so as to provide the functional characteristics of a storage network102to a host device106.

An SAS expander device104(e.g. SAS expander device104-3) and an end-device103(e.g. SAS device103A-4) may be said to be in a parent-child relationship when data from the controller device102must pass through the SAS expander device104to reach the end-device103. Similarly, a first SAS expander device104(e.g. SAS expander device104-1) and a second SAS expander device104(e.g. SAS expander device104-2) may be said to be in a parent-child relationship when data from the controller device102must pass through the first SAS expander device104to reach the SAS expander device104. One of skill in the art will recognize that other relationships may exist among devices (e.g. grandparent-grandchild) as determined by a number intervening devices in the network topology. Such devices are herein referred to collectively as “parent” and “child” devices and such device relationships are herein referred to collectively as “parent/child” relationships.

An end-device103may be operably coupled to the controller device102by one or more physical layer connections (e.g. PHY105-1-PHY105-2).

FIG. 1illustrates an exemplary configuration of the storage network102. In the storage network102, a PHY105may have an associated connection rate (e.g. 1.5 G, 3.0 G or 6.0 G) and a number of connections (e.g. 1, 2 or 4). It should be noted that a child end-device103(e.g. SAS device103A-4) may have an associated PHY105(e.g. PHY105-11) having a differing connection rate (e.g. 3 G) than a connection rate (e.g. 1.5 G) of a PHY105(e.g. PHY105-6) associated with a parent device (e.g. SAS expander device104-3). Similarly, a child end-device103(e.g. SAS device103A-4) may have an associated PHY105(e.g. PHY105-11) having a differing number of connections (e.g. 4) than a number of connections (e.g. 2) of a PHY105(e.g. PHY105-6) associated with a parent device (e.g. SAS expander device104-3).

Following are a series of flowcharts depicting various exemplary implementations. For ease of understanding, the flowcharts are organized such that the initial flowcharts present implementations via an example implementation and thereafter the following flowcharts present alternate implementations and/or expansions of the initial flowchart(s) as either sub-component operations or additional component operations building on one or more earlier-presented flowcharts. Those having skill in the art will appreciate that the style of presentation utilized herein (e.g., beginning with a presentation of a flowchart(s) presenting an example implementation and thereafter providing additions to and/or further details in subsequent flowcharts) generally allows for a rapid and easy understanding of the various process implementations. In addition, those skilled in the art will further appreciate that the style of presentation used herein also lends itself well to modular and/or object-oriented program design paradigms.

FIG. 2illustrates an operational flow200representing example operations related to configuring a storage network. InFIG. 2and in following figures that include various examples of operational flows, discussion and explanation may be provided with respect to the above-described examples ofFIG. 1, and/or with respect to other examples and contexts. However, it should be understood that the operational flows may be executed in a number of other environments and contexts, and/or in modified versions ofFIG. 1. Also, although the various operational flows are presented in the sequence(s) illustrated, it should be understood that the various operations may be performed in other orders than those that are illustrated, or may be performed concurrently.

After a start operation, the operational flow200moves to an operation210. Operation210depicts detecting one more connection rates associated with one or more input PHYs associated with one or more parent devices. For example, as shown inFIG. 1, the detection logic102A of the controller device102may query one or more parent devices (e.g. SAS expander device104-1) so as to determine the connection rate (e.g. 1.5 G) at which a PHY (e.g. PHY105-11) associated with the parent device may be transmitting data to a child device (e.g. SAS device103A-4).

Operation220depicts detecting a number of input connections associated with one or more PHYs associated with one or more parent devices. For example, as shown inFIG. 1, the detection logic102A of the controller device102may query one or more parent devices (e.g. SAS expander device104-1) so as to determine a number of connections (e.g.2) that a PHY (e.g. PHY105-11) associated with the parent device may provide to a child device (SAS device103A-4).

Operation230depicts setting one or more connection rates associated with one or more input PHYs associated with one or more child devices according to the one or more connection rates associated with the one or more input PHYs associated with the one or more parent devices. For example, as shown inFIG. 1, even though a child device (e.g. SAS device103A-4) may have an input PHY (e.g. PHY105-11) capable of receiving data at a given connection rate (e.g.3G), it may be the case that a parent device (e.g. SAS expander device104-3) may have an input PHY (e.g. PHY105-6) which is only capable of receiving data at a lower connection rate (e.g.1.5G). As such, the effective connection rate of the child device (e.g. SAS device103A-4) may never reach its designed connection rate. Upon detection of such a condition by the detection logic102A, the configuration logic102B may set one or more hardware and/or firmware registers102B-1to reflect the effective connection rate (e.g.1.5G) of the input PHY (e.g. PHY105-11) associated with the child device (e.g. SAS device103A-4). The configuration data maintained by the hardware and/or firmware registers102B-1may be provided to a host device106so as to present an abstracted view of the effective performance capabilities of the storage network102.

Operation240depicts setting a number of input connections associated with one or more PHYs associated with one or more child devices according to a number of input connections associated with one or more PHYs associated with one or more parent devices. For example, as shown inFIG. 1, even though a child device (e.g. SAS device103A-4) may have an input PHY (e.g. PHY105-11) presenting a given connection number of input connections (e.g.4), it may be the case that a parent device (e.g. SAS expander device104-3) may have an input PHY (e.g. PHY105-6) which is only presents a reduced number of input connections (e.g. 2 connections). As such, the effective number of input connections available for the child device (e.g. SAS device103A-4) may not correspond with its actual number of input connections. Upon detection of such a condition by the detection logic102A, the configuration logic102B may set one or more hardware and/or firmware registers102B-1to reflect the effective number of input connections (e.g.2) of the input PHY (e.g. PHY105-11) associated with the child device (e.g. SAS device103A-4). The configuration data maintained by the hardware and/or firmware registers102B-1may be provided to a host device106so as to present an abstracted view of the effective performance capabilities of the storage network102.

FIG. 3illustrates alternative embodiments of the example operational flow200ofFIG. 2.FIG. 3illustrates example embodiments where the operation220may include at least one additional operation. Additional operations may include an operation302.

Operation302depicts detecting a number of input connections associated with one or more PHYs associated with one or more parent devices having time-division multiplexing enabled. For example, as shown inFIG. 1, a parent device (e.g. SAS expander device104-2) may support an input PHY (e.g. PHY105-5) which includes one or more connections employing time-division multiplexing (TDM). TDM allows two or more signals to be transferred in a single communication channel by transmitting alternating segments of each signal. A channel employing such a methodology may effectively double the number of effective connections viewable by a receiver. The detection logic102A of the controller device102may query one or more parent devices (e.g. SAS expander device104-2) so as to determine whether or not an associated input PHY (e.g. PHY105-5) associated with the one or more parent devices employs TDM functionality. Should one or more connections (e.g. connection105-5′ of PHY105-5) employ TDM, the detection logic102A of the controller device102may associate one or more TDM connections with the PHY105in addition to the one or more actual connections of the PHY105. For example, the detection logic102A of the controller device102may detect3actual connections and one TDM connection for PHY105-5for a total of 4 connections which may be viewable to an end-device103.

FIG. 4illustrates alternative embodiments of the example operational flow200ofFIG. 2.FIG. 4illustrates example embodiments where the operation240may include at least one additional operation. Additional operations may include an operation402.

Operation402depicts setting a number of input connections associated with one or more PHYs associated with one or more child devices according to a number of input connections associated with one or more PHYs associated with one or more parent devices having time-division multiplexing enabled. For example, as shown inFIG. 1, even though a child device (e.g. SAS device103A-6) may have an input PHY (e.g. PHY105-9) presenting a given connection number of input connections (e.g. 4), it may be the case that a parent device (e.g. SAS expander device104-2) may have an input PHY (e.g. PHY105-5) which is only presents a reduced number of input connections (e.g. 3 connections). However, it may also be the case that a parent device (e.g. SAS expander device104-2) may have an input PHY (e.g. PHY105-5) employing TDM functionality for one or more connection channels (e.g. connection105-5′). As such, the effective number of input connections for the child device (e.g. SAS device103A-6) may still correspond with its actual number of input connections. Upon detection of a parent device (e.g. SAS expander device104-2) employing TDM by detection logic102A, the configuration logic102B may set one or more hardware and/or firmware registers102B-1to reflect the effective number of input connections (e.g. 4) of the input PHY (e.g. PHY105-9) associated with the child device (e.g. SAS device103A-6). The configuration data maintained by the hardware and/or firmware registers102B-1may be provided to a host device106so as to present an abstracted view of the effective performance capabilities of the storage network102.

FIG. 5illustrates alternative embodiments of the example operational flow200ofFIG. 2.FIG. 5illustrates example embodiments where the operation210may include at least one additional operation. Additional operations may include an operation502and/or an operation504.

Operation502depicts detecting one or more connection rates associated with one or more input PHYs of one or more child SATA devices which are greater than one more connection rates associated with one or more PHYs associated with one or more parent devices. For example, as shown inFIG. 1, a child end-device103may be a Serial ATA (SATA) device employing SAS1.1protocols (e.g. SATA device103B-2). A PHY (e.g. PHY105-10) having a given connection rate (e.g. 3.0 G) may be associated with the SATA child end-device103. A parent device (e.g. SAS expander device104-3) may support an input PHY (e.g. PHY105-6) having a given connection rate (e.g. 1.5 G) which is less than that of an SATA child end-device103(e.g. SATA device103B-2). Under SAS1.1protocols, if an SATA drive is connected to an expander device at a rate greater than what is supported by a parent device in the pathway, it may be necessary to reset the SATA drive via an SMP PHY Control (Link Reset) where the Programmed Maximum Physical Link Rate is set to the pathway rate. As such, the detection logic102A of the controller device102may query one or more parent devices (e.g. SAS expander device104-2) and one or more SATA child devices (e.g. SATA device103B-2) so as to determine whether or not an associated input PHY (e.g. PHY105-6) associated with the one or more parent devices has a connection rate that is less than that of an input PHY (e.g. PHY105-10) associated with the SATA child device (e.g. SATA device103B-2).

Operation504depicts setting one or more connection rates associated with one or more input PHYS of one or more child SATA devices to the one or more connection rates associated with one or more PHYs associated with one or more parent devices. For example, as shown inFIG. 1, upon detection by the detection logic102A of the controller device102of parent device (e.g. SAS expander device104-3) which may support an input PHY (e.g. PHY105-6) having a given connection rate (e.g. 1.5 G) which is less than a connection rate (e.g. 3.0 G) of an SATA child end-device103(e.g. SATA device103B-2), the configuration logic102B may transmit a SMP PHY Control (Link Reset) command to the SATA child end-device103setting the Programmed Maximum Physical Link Rate for the SATA child end-device103to the pathway connection rate (e.g. 1.5 G).

Referring toFIG. 6, a table representation of the results (as may be embodied by the hardware and/or firmware registers102B-1of the controller device102) of the above described methods when applied to the network components as presented inFIG. 1. The “Max Connection Rates” values correspond to the effective connection rate for the input PHY105associated with each listed component. The “Max Number of Connections” values correspond to the effective number of input connections for the input PHY105associated with each listed component.

Although specific dependencies have been identified in the claims, it is to be noted that all possible combinations of the features of the claims are envisaged in the present application, and therefore the claims are to be interpreted to include all possible multiple dependencies.