Autonomous raid data storage device locking system

An autonomous RAID data storage device locking system includes first RAID data storage device(s) that store data included in a data stripe, and that are coupled to a second RAID data storage device. The second RAID data storage device receives a command to perform a data update operation on a subset of data included in the data stripe, and transmits a locking request to each first RAID data storage device. When the second RAID data storage device receives a locking confirmation that indicates that each first RAID data storage device is locked, it completes the data update operation on the subset of data included in the data stripe. The second RAID data storage device then transmits an unlocking request to each first RAID data storage device to cause them to unlock, and transmits a completion communication that indicates that the data update operation has been performed.

BACKGROUND

The present disclosure relates generally to information handling systems, and more particularly to autonomously locking RAID data storage devices in an information handling system.

Information handling systems sometime utilize storage systems such as those provided by a Redundant Array of Independent Disks (RAID) storage system that includes a plurality of RAID data storage devices. As will be appreciated by one of skill in the art, RAID data storage systems are provided by a data storage virtualization technology that combines the physical RAID data storage devices into one or more logical storage units for the purposes of data redundancy, performance improvements, and/or other benefits known in the art. For example, data in a RAID data storage system may be distributed across the RAID data storage devices using several different techniques that are referred to as “RAID levels” that provide different levels of redundancy and performance (e.g., RAID 0, RAID 1, RAID 5, RAID 6, and so on), with each RAID level providing a different balance among goals that include reliability, availability, performance, and capacity.

The introduction of new storage technologies for use in RAID data storage systems has provided for performance and efficiency improvements in RAID data storage systems. For example, Non-Volatile Memory express (NVMe) storage devices (e.g., NVMe Solid State Drive (SSD) drives) utilize an open logical device interface specification for accessing its non-volatile storage media (e.g., provided by NAND flash memory devices) via a Peripheral Component Interconnect express (PCIe) bus to provide low latency, internal parallelism, and/or other benefits known in the art, and have begun to be implemented as the RAID data storage devices discussed above in order to assist in data update operations for the RAID data storage system. The inventors of the present disclosure describe some techniques for performing RAID storage-device-assisted data updates in U.S. patent application Ser. No. 16/586,445, filed on Sep. 27, 2019, and those RAID data storage systems may utilize NVMe storage devices to perform some or all of the data update operations that are traditionally performed by a RAID storage controller device in the RAID data storage system. However, the RAID storage-device-assisted data updates discussed above still require orchestration of RAID data transfer operations by the RAID storage controller device, thus opening up opportunities to further offload operations from RAID storage controller devices.

Accordingly, it would be desirable to provide a RAID data storage system that addresses the issues discussed above.

SUMMARY

According to one embodiment, an Information Handling System (IHS) includes a processing system; and a memory system that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a Redundant Array of Independent Disks (RAID) data storage engine that is configured to: receive a command to perform a data update operation on a subset of data that is included in a data stripe; transmit a locking request to each at least one first RAID data storage device that stores data that is included in the data stripe; receive a locking confirmation that indicates that each first RAID data storage device is locked; complete, in response to receiving the locking confirmation, the data update operation on the subset of data that is included in the data stripe; transmit, in response to completing the data update operation, an unlocking request to each first RAID data storage device to cause each first RAID data storage device to unlock; and transmit a completion communication that indicates that the data update operation has been performed.

DETAILED DESCRIPTION

Referring now toFIG. 2, an embodiment of a Redundant Array of Independent Disks (RAID) data storage system200is illustrated. In the illustrated embodiment, the RAID data storage system200incudes a host system202. In an embodiment, the host system202may be provided by the IHS100discussed above with reference toFIG. 1, and/or may include some or all of the components of the IHS100. For example, the host system202may include server device(s), desktop computing device(s), a laptop/notebook computing device(s), tablet computing device(s), mobile phone(s), and/or any other host devices that one of skill in the art in possession of the present disclosure would recognize as operating similarly to the host system202discussed below. In the illustrated embodiment, the RAID data storage system200also includes a switch device203that is coupled to the host system202and that may be provided by the IHS100discussed above with reference toFIG. 1, and/or may include some or all of the components of the IHS100. For example, the switch device203may be provided by a Peripheral Component Interconnect Express (PCIe) switch device, although other switch devices will fall within the scope of the present disclosure as well.

In the illustrated embodiment, the RAID data storage system200also includes a RAID storage controller device204that is coupled to the host system202via the switch device203, and that may be provided by the IHS100discussed above with reference toFIG. 1, and/or may include some or all of the components of the IHS100. For example, the RAID storage controller device204may include any storage device/disk array controller device that is configured to manage physical storage devices and present them to host systems as logical units. In the discussion below, the RAID storage controller device204includes a processing system, and a memory system that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a RAID storage controller engine that is configured to perform the functions of the RAID storage controller engines and RAID storage controller devices discussed below.

While a specific RAID storage controller device204has been illustrated in a particular configuration (e.g., a “look-aside” RAID storage controller device configuration where the RAID storage controller device204is coupled to each of the host system202and the RAID data storage devices206a-206d, and with each of the RAID data storage device206a-206dincluding a “direct” connection to the host system202via the switch device203), one of skill in the art in possession of the present disclosure will recognize that RAID storage controller devices (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the RAID storage controller device204) may include a variety of components and/or component configurations for providing conventional RAID storage controller device functionality, as well as the functionality discussed below, while remaining within the scope of the present disclosure as well. For example, while one of skill in the art in possession of the present disclosure will recognize that the RAID storage controller device204is illustrated and described as a hardware RAID storage controller device provided in a chassis, in other embodiments the RAID storage controller device may be a software RAID storage controller device provided by software (e.g., instructions stored on a memory system) in the host system202that is executed by a processing system in the host system202while remaining within the scope of the present disclosure as well. As such, in some embodiments, the operations of the RAID storage controller device204discussed below may be performed via the processing system in the host system202.

Furthermore, the RAID data storage system200also includes a plurality of RAID data storage devices that are illustrated inFIG. 2as a plurality of RAID primary data storage devices206a,206b, and up to206c, along with a RAID parity storage data device206d, each of which is coupled to the host system202and the RAID storage controller system204via the switch device203. However, as will be appreciated by one of skill in the art in possession of the present disclosure, any or all the plurality of RAID data storage devices in the RAID data storage system200illustrated inFIG. 2may perform dual roles for different data stripes, with any particular RAID data storage device operating as a RAID primary data storage device for one data stripe and a RAID parity data storage device for another data stripe. As will be appreciated by one of skill in the art in possession of the present disclosure, the RAID data storage devices in the RAID data storage system200ofFIG. 2are described as operating in a RAID 5 configuration, with the RAID primary data storage devices configured to store primary data (e.g., provided by the host system202), and the RAID parity data storage device configured to store parity data that may be utilized to recover primary data when that primary data becomes unavailable on one of the RAID primary data storage devices.

However, while a few RAID data storage devices in a particular configuration are illustrated, one of skill in the art in possession of the present disclosure will recognize that many more storage devices may (and typically will) be coupled to the RAID storage controller system204(e.g., in a datacenter) and may be provided in other RAID configurations while remaining within the scope of the present disclosure. In the embodiments discussed below, the RAID data storage devices206a-206dare described as being provided by Non-Volatile Memory express (NVMe) Solid State Drive (SSD) drives, but one of skill in the art in possession of the present disclosure will recognize that other types of storage devices with similar functionality as the NVMe SSD drives (e.g., NVMe PCIe add-in cards, NVMe M.2 cards, etc.) may be implemented according to the teachings of the present disclosure and thus will fall within its scope as well. Furthermore, while a specific RAID data storage system200has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that the RAID data storage system of the present disclosure may include a variety of components and component configurations while remaining within the scope of the present disclosure as well.

Referring now toFIG. 3, an embodiment of a RAID data storage device300is illustrated that may provide any or all of the RAID primary data storage devices and the RAID parity data storage device discussed above with reference toFIG. 2. As such, the RAID data storage device300may be provided by an NVMe SSD storage device, but one of skill in the art in possession of the present disclosure will recognize that other types of storage devices with similar functionality as the NVMe SSD storage devices (e.g., NVMe PCIe add-in cards, NVMe M.2 cards, etc.) may be provided according to the teachings of the present disclosure and thus will fall within its scope as well. In the illustrated embodiment, the RAID data storage device300includes a chassis302that houses the components of the RAID data storage device300, only some of which are illustrated below. For example, the chassis302may house a processing system (not illustrated, but which may include the processor102discussed above with reference toFIG. 1) and a memory system (not illustrated, but which may include the memory114discussed above with reference toFIG. 1) that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a RAID storage engine304that is configured to perform the functionality of the RAID storage engines and/or RAID data storage devices discussed below. While not illustrated, one of skill in the art in possession of the present disclosure will recognize that the RAID storage engine304may include, or be coupled to, other components such as a queues (e.g., submission queues and completion queues) and/or RAID data storage device components that would be apparent to one of skill in the art in possession of the present disclosure.

The chassis302may also house a storage subsystem306that is coupled to the RAID storage engine304(e.g., via a coupling between the storage subsystem306and the processing system). Continuing with the example provided above in which the RAID data storage device300is an NVMe SSD storage device, the storage subsystem306may be provided by a flash memory array such as, for example, a plurality of NAND flash memory devices. However, one of skill in the art in possession of the present disclosure will recognize that the storage subsystem306may be provided using other storage technologies while remaining within the scope of the present disclosure as well. The chassis302may also house a first buffer subsystem308athat is coupled to the RAID storage engine304(e.g., via a coupling between the first buffer subsystem308aand the processing system). Continuing with the example provided above in which the RAID data storage device300is an NVMe SSD storage device, the first buffer subsystem308amay be provided by device buffer that is internal to the NVMe SSD storage device, not accessible via a PCIe bus connected to the NVMe SSD storage device, and conventionally utilized to initially store data received via write commands before writing them to flash media (e.g., NAND flash memory devices) in the NVMe SSD storage device. However, one of skill in the art in possession of the present disclosure will recognize that the first buffer subsystem308amay be provided using other buffer technologies while remaining within the scope of the present disclosure as well.

The chassis302may also house a second buffer subsystem308bthat is coupled to the RAID storage engine304(e.g., via a coupling between the second buffer subsystem308band the processing system). Continuing with the example provided above in which the RAID data storage device300is an NVMe SSD storage device, the second buffer subsystem308bmay be provided by a Controller Memory Buffer (CMB) subsystem. However, one of skill in the art in possession of the present disclosure will recognize that the second buffer subsystem308bmay be provided using other buffer technologies while remaining within the scope of the present disclosure as well. The chassis302may also house a storage system (not illustrated, but which may be provided by the storage device108discussed above with reference toFIG. 1) that is coupled to the RAID storage engine304(e.g., via a coupling between the storage system and the processing system) and that includes a RAID storage database309that is configured to store any of the information utilized by the RAID storage engine304as discussed below.

The chassis302may also house a communication system310that is coupled to the RAID storage engine304(e.g., via a coupling between the communication system310and the processing system), the first buffer subsystem308a, and the second buffer subsystem308b, and that may be provided by any of a variety of storage device communication technologies and/or any other communication components that would be apparent to one of skill in the art in possession of the present disclosure. Continuing with the example provided above in which the RAID data storage device300is an NVMe SSD storage device, the communication system310may include any NVMe SSD storage device communication component that enables the Direct Memory Access (DMA) operations described below, the submission and completion queues discussed below, as well as any other components that provide NVMe SDD storage device communication functionality that would be apparent to one of skill in the art in possession of the present disclosure. While a specific RAID data storage device300has been illustrated, one of skill in the art in possession of the present disclosure will recognize that RAID data storage devices (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the RAID data storage device300) may include a variety of components and/or component configurations for providing conventional RAID data storage device functionality, as well as the functionality discussed below, while remaining within the scope of the present disclosure as well.

Referring now toFIG. 4, an embodiment of a method400for autonomously locking RAID data storage devices is illustrated. As discussed below, the systems and methods of the present disclosure provide for autonomous locking operations by RAID data storage devices in a RAID data storage system in order to allow a stripe of data stored on those RAID data storage devices to be updated. For example, first RAID data storage devices may store data that is included in a data stripe, and a second RAID data storage device coupled to the first RAID data storage device may receive a command to perform a data update operation on a subset of data that is included in the data stripe. In response, the second RAID data storage device may transmit a locking request to each first RAID data storage device and receive a locking confirmation that indicates that each first RAID data storage device is locked. In response, the second RAID data storage device may complete data update operation on the subset of data that is included in the data stripe, and then transmit an unlocking request to each first RAID data storage device to cause each first RAID data storage device to unlock. The second RAID data storage device may then transmit a completion communication that indicates that the data update operation has been performed. As such, orchestration of RAID storage-device-assisted data updates by RAID storage controller devices is substantially reduced by allowing RAID data storage devices to autonomously lock and unlock during their performance of a data update command.

With reference toFIG. 5, the RAID storage system200is illustrated with the RAID primary data storage device206astoring primary data500ain its storage subsystem306, the RAID primary data storage device206bstoring primary data500bin its storage subsystem306, and the RAID primary data storage device206cstoring primary data500cin its storage subsystem306. While only three RAID primary data storage devices are illustrated and described in the examples provided below, one of skill in the art in possession of the present disclosure will recognize that any number of RAID primary data storage devices may store primary data while remaining within the scope of the present disclosure as well. In addition, the RAID storage system200is also illustrated with the RAID parity data storage device206dstoring parity data502in its storage subsystem306, and one of skill in the art in possession of the present disclosure will recognize that the parity data502may have been generated via an XOR operation performed on the primary data500a-500cin the RAID primary data storage devices206a-206c, and allows for the rebuilding of any primary data stored on any one RAID primary data storage device in the event that primary data/RAID primary data storage device becomes unavailable.

As will also be appreciated by one of skill in the art in possession of the present disclosure, and as discussed in some of the examples provided below, the primary/parity data storage configuration illustrated inFIG. 5provides primary/parity for a single data strip, and different data strips may have different primary/parity data storage configurations (e.g., in a plurality of RAID storage devices provided in a RAID storage system, a first data stripe may include primary data on first, second, and third RAID storage devices and parity data on a fourth RAID storage device; a second data stripe may include primary data on the second, third, and fourth RAID storage devices and parity data on the first RAID storage device, etc.) As such, while a particular RAID storage system device and data configuration is illustrated for purposes of the examples below, one of skill in the art in possession of the present disclosure will recognize that a variety of device and data configurations will fall within the scope of the present disclosure as well.

The method400begins at block402where a RAID storage controller device configures RAID data storage devices. In an embodiment, at block402, the RAID storage controller engine in the RAID storage controller device204may operate to communicate with the RAID data storage devices206a-206din order to configure the RAID data storage devices206a-206dto perform the direct command operations with each other as discussed in further detail below, as well as to perform the multicasting communications discussed in further detail below. The inventors of the present disclosure have developed techniques for providing direct command operation between RAID data storage devices which are described in U.S. patent application Ser. No. 16/838,224, filed on Apr. 2, 2020, the disclosure of which is incorporated herein by reference in its entirety. As discussed in that application, for each pair of RAID data storage devices206a-206din the RAID data storage system200, the RAID storage controller device204may communicate with those RAID data storage devices206a-206dto configure submission and completion queue pairs that allow any RAID data storage device in the RAID data storage system200to provide commands directly to another RAID data storage device in the RAID data storage system200using virtual functions (Single Root Input/Output Virtualization (SR-IOV) virtual functions) in those RAID data storage devices206a-206d, as well as to directly indicate to another RAID data storage device in the RAID data storage system200that a command received from that RAID data storage device has been completed (which may include the transmission of an interrupt directly between those RAID data storage devices.) In addition, the configuration at block402may include configuring RAID primary data storage devices that store primary data for a data stripe in the RAID data storage system200as part of multi-casting groups (e.g., a PCIe multi-casting groups) in order to enable the exchange of the multi-cast locking and unlocking communications discussed below.

As such, with reference toFIG. 6A, the RAID storage controller engine in the RAID storage controller device204may perform configuration communications600with the RAID primary data storage device206ain order to configure at least some of the submission and completions queues utilized by the RAID primary data storage device206a/RAID primary data storage device206bpair, the RAID primary data storage device206a/RAID primary data storage device206cpair, and the RAID primary data storage device206a/RAID parity data storage device206dpair. Similarly, with reference toFIG. 6B, the RAID storage controller engine in the RAID storage controller device204may perform configuration communications602with the RAID primary data storage device206bin order to configure at least some of the submission and completions queues utilized by the RAID primary data storage device206b/RAID primary data storage device206apair, the RAID primary data storage device206b/RAID primary data storage device206cpair, and the RAID primary data storage device206b/RAID parity data storage device206dpair.

Similarly as well, with reference toFIG. 6C, the RAID storage controller engine in the RAID storage controller device204may perform configuration communications604with the RAID primary data storage device206cin order to configure at least some of the submission and completions queues utilized by the RAID primary data storage device206c/RAID primary data storage device206apair, the RAID primary data storage device206c/RAID primary data storage device206bpair, and the RAID primary data storage device206c/RAID parity data storage device206dpair. Similarly as well, with reference toFIG. 6D, the RAID storage controller engine in the RAID storage controller device204may perform configuration communications606with the RAID parity data storage device206din order to configure at least some of the submission and completions queues utilized by the RAID parity data storage device206d/RAID primary data storage device206apair, the RAID parity data storage device206d/RAID primary data storage device206bpair, and the RAID parity data storage device206d/RAID primary data storage device206cpair.

As will be appreciated by one of skill in the art in possession of the present disclosure, any of the configuration communications600,602,604, and606may be substantially similar to the operations/communications described in U.S. patent application Ser. No. 16/838,224, filed on Apr. 2, 2020, and thus may result in the configuration of direct command operation submission and completion queues for each RAID data storage device pair that allows those RAID data storage devices to communicate directly with each other. As such, while not illustrated in the examples below, one of skill in the art in possession of the present disclosure will recognize that the submission and completion queues discussed in U.S. patent application Ser. No. 16/838,224, filed on Apr. 2, 2020, may be provided in the RAID data storage devices206a-206dto enable the direct command operations discussed below. Furthermore, any or all of the configuration communications600,602,604, and606may include the configuration of the RAID data storage devices206a-206dthat store primary data for a data stripe as part of multi-cast groups in order to enable the locking and unlocking communications discussed below.

The method400then proceeds to block404where a first RAID data storage device receives a data update command. The inventors of the present disclosure have developed techniques for providing multi-step commands to RAID data storage devices which are described in U.S. patent application Ser. No. 16/838,224 filed on Apr. 2, 2020, the disclosure of which is incorporated herein by reference in its entirety. As will be appreciated by one of skill in the art in possession of the present disclosure, that application describes flexible techniques for allowing a RAID storage controller device to send a single, multi-step command to a RAID storage device that expresses multiple steps of operations that RAID data storage device(s) in the RAID data storage system200should perform, thus offloading control processing and control communication transmissions from the RAID storage controller device.

For example, the generation of multi-step commands may include a RAID storage controller device coupled to a RAID storage system identifying a RAID storage system configuration of the RAID storage system and, based on that RAID storage system configuration, generating a first multi-step command definition file for a first RAID storage device that is included in the RAID storage system. The first multi-step command definition file may define a plurality of first steps that each include at least one first operation, and may be “tuned” to the first RAID storage device based on first RAID storage device configuration, the first RAID storage device capabilities, the operations that the first RAID storage device is expected to perform, the RAID storage controller device capabilities, and/or any other information that may be determined from the RAID storage system configuration. As such, while RAID data storage devices within a RAID data storage system/RAIDset are often homogeneous, different types of RAID data storage devices may be provided in a RAID data storage system and coupled to its RAID storage controller device, and the first multi-step command definition file may be different than second multi-step definition file(s) provided to second RAID data storage device(s) included in the RAID storage system.

The RAID storage controller device may then transmit the first multi-step command definition file to the first RAID storage device and, subsequent to transmitting the first multi-step command definition file, the RAID storage controller device may generate a first multi-step command that references the first multi-step command definition file and includes at least one first parameter for use in performing one or more first operations included in the plurality of first steps defined by the first multi-step command definition file. The RAID storage controller device may then transmit the first multi-step command to the first RAID storage device, which causes the first RAID storage device to carry out the first multi-step command based on the multi-step command definition file and using the at least one first parameter. As such, RAID storage controller devices may send a single command that is configured to cause a RAID storage device to perform multiple steps, each with one or more operation, rather than sending a respective command for each of those operations, thus increasing the ability of the RAID storage controller device to scale with high performance RAID storage devices, offloading control operations from the RAID storage controller device, and/or reducing the number of completion communications generated and transmitted by the RAID storage controller device (thus reducing its processing and data transmission overhead.) As such, while not discussed in detail herein, one of skill in the art in possession of the present disclosure will appreciate that the multi-step commands generated and transmitted by the RAID storage controller device204to any of the RAID data storage devices206a-206dduring the method400may be preceded by any of the multi-step command operations described in U.S. patent application Ser. No. 16/832,348, filed on Mar. 27, 2020.

The inventors of the present disclosure also describe techniques for providing an autonomous RAID data storage system in U.S. patent application Ser. No. 16/839,428, filed on Apr. 3, 2020 (the “autonomous RAID data storage system application”), the disclosure of which is incorporated herein by reference in its entirety. One of skill in the art in possession of the present disclosure will appreciate that the autonomous locking operations performed according to the teachings of the present disclosure may be incorporated into the teachings of the autonomous RAID data storage system application and, similarly as discussed in the autonomous RAID data storage system application, the method400may be performed for any of a variety of multi-step commands. Thus, while discussion below provides an example of the performance of locking operations associated with a “process write” multi-step command that is described in more detail in the autonomous RAID data storage system application, locking operations associated with a “degraded read” multi-step command, a “degraded write” multi-step command, and/or other multi-step commands discussed in the autonomous RAID data storage system application (e.g., other RAID data transfer operations, RAID maintenance operations such as the BackGround Initialization (BGI) maintenance operations and Consistency Check (CC) maintenance operations, etc.) will fall within the scope of the present disclosure as well.

As such, with reference to the “process write” embodiment discussed above andFIG. 7A, in an embodiment of block404, the host system202may generate a write command700that instructs the writing of data stored in the host system202to RAID data storage device(s) in the RAID data storage system200, and may transmit the write command700via the switch device203to the RAID storage controller device204. In this example, the RAID storage controller engine in the RAID storage controller device204may receive that write command700and, in response, determine that the data identified in the write command700should be written to the RAID primary data storage device206a. Thus, in this specific embodiment of block404, the RAID storage controller engine in the RAID storage controller device204may then generate a “process write” multi-step command702for the RAID primary data storage device206a, and transmit that “process write” multi-step command702command via the switch device203to the RAID primary data storage device206a. As will be appreciated by one of skill in the art in possession of the present disclosure, the generation of the “process write” multi-step command702may include the performance of any of the pre-command operations described in U.S. patent application Ser. No. 16/832,348, filed on Mar. 27, 2020, and the “process write” multi-step command702may include any information needed for the RAID primary data storage device206aand the RAID parity data storage device206dto perform the functionality described below.

However, while the “process write” multi-step command702is illustrated and described below as being transmitted to the RAID primary data storage device upon which primary data is being updated, one of skill in the art in possession of the present disclosure will appreciate that a RAID primary data storage device that is not updating its primary data may receive the “process write” multi-step command702and cause another RAID primary data storage device to update its primary data (as well as perform the other operations discussed below) while remaining within the scope of the present disclosure as well.

In addition, at block404, the RAID storage controller engine in the RAID storage controller device204may operate to generate a journal (or journal entry) that logs the generation and transmission of the “process write” multi-step command702. As will be appreciated by one of skill in the art in possession of the present disclosure, journal operations such that those performed to log the generation and transmission of the “process write” multi-step command702in the journal in the RAID storage controller device204may be performed to create a record of the data transfer operation being performed such that, in the event of a power loss to the RAID data storage system200or other interruption to the data transfer operation, the data transfer operation may be resumed after power is restored and/or the interruption ends. As such, the journal in the RAID storage controller device204may identify that the write command700was received, that the “process write” multi-step command702was generated and transmitted to the RAID primary data storage device206a, that no completion message has yet been received from the RAID primary data storage device206a, and/or any other journal information that would be apparent to one of skill in the art in possession of the present disclosure.

The method400then proceeds to block406where the first RAID data storage device performs data update operations. In an embodiment, at block406and following the receiving of the “process write” multi-step command702by the RAID data storage engine304in the RAID primary data storage device206a/300via its communication subsystem310, the RAID data storage engine304in the RAID primary data storage device206a/300may identify the steps in the “process write” multi-step command702and determine a first subset of operations in those steps that must be performed by the RAID primary data storage device206a, a second subset of operations in those steps that must be performed by the RAID parity data storage device206d, and RAID data storage devices206band206cthat should be locked during the performance of at least some of the first and second subsets of operations. However, while the example of the “process write” multi-step command702discussed below only involves operations by the RAID primary data storage device206aand the RAID parity data storage device206d, one of skill in the art in possession of the present disclosure will appreciate that multi-step commands may involve the performance of operations by any number of the RAID data storage devices while remaining within the scope of the present disclosure as well.

With reference toFIG. 7B, first operation(s) in the first subset of operations included in the “process write” multi-step command702for performance by the RAID primary data storage device206amay include the retrieval of “updated” primary data from the host system202. As will be appreciated by one of skill in the art in possession of the present disclosure and as discussed above, the write command700generated by the host system202may identify “updated” primary data that is stored on the host system202and that should “update” or replace the “current” primary data500astored in the storage subsystem306of the RAID primary data storage device206a. As such, at block406, the RAID data storage engine304in the RAID primary data storage device206a/300may perform Direct Memory Access (DMA) operations704that access a memory system that is included in the host system202and that stores the “updated” primary data706, and write that “updated” primary data706to its first buffer subsystem308a(e.g., a device buffer) in the RAID primary data storage device206a, as illustrated inFIG. 7B.

Furthermore, at block406, the RAID data storage engine304in the RAID primary data storage device206a/300may operate to generate a journal708(or journal entry) that logs performance of any of the first operations(s) discussed above. As will be appreciated by one of skill in the art in possession of the present disclosure, journal operations such that those performed to log the performance of any of the first operations(s) discussed above may be performed to create a record of the data transfer operation being performed such that, in the event of a power loss to the RAID data storage system200or other interruption to the data transfer operation, the data transfer operation may be resumed after power is restored and/or the interruption ends. In particular, one of skill in the art in possession of the present disclosure will appreciate that the multiple operations autonomously performed by the RAID primary data storage device206aare not visible to the RAID storage controller device204, and thus may be tracked by the RAID primary data storage device206ausing the journal708such that those operations may be resumed after power is restored and/or the interruption ends. As such, the journal708may identify and be used to regularly update the status of any of the first operation(s) performed by the RAID primary data storage device206a, and the RAID primary data storage device206dmay remove any of the entries for those first operation(s) from the journal708once they have been completed.

The method400then proceeds to block408where the first RAID data storage device transmits a locking request to second RAID data storage device(s). In some embodiments, the locking requests transmitted by the RAID primary data storage device206ato the RAID primary data storage devices206band206cas discussed below may be NVMe locking requests. However, as illustrated inFIG. 7C, in an embodiment of block408, the RAID data storage engine304in the RAID primary data storage device206amay generate and transmit a multi-cast locking request710via its communication system310and to the switch device203, which causes a locking request712ato be transmitted to the RAID primary data storage device206band a locking request712bto be transmitted to the RAID primary data storage device206c. As will be understood by one of skill in the art in possession of the present disclosure, the updating of the “current” primary data500awith the “updated” primary data706requires an update to the “current” parity data502in the storage subsystem306in the RAID parity data storage device206d. Furthermore, the generation of that “updated” parity data requires that no change occur to the “current” primary data500bin the storage subsystem306in the RAID primary storage device206band the “current” primary data500cin the storage subsystem306in the RAID primary storage device206c. In other words, the calculations performed to update the “current” parity data502below assumes that the “current” primary data500band500chas not changed, and thus any change to that “current” primary data500band500cduring the generation of the “updated” parity data will result in that “updated” parity data being incorrect (i.e., unable to be used to rebuild the primary data500bor500cin the event it becomes unavailable.)

As such, at block408, the RAID data storage engine304in the RAID primary data storage device206amay generate and transmit the multi-cast locking request710to the multi-cast group (e.g., a PCIe multi-cast group) that includes the RAID primary storage devices206band206c. In response to receiving the multi-cast locking request, the switch device203may transmit locking requests to each RAID primary data storage device that is part of the multi-cast group except for the originator of the multi-cast locking request710, resulting in the transmission of the locking requests712aand712bto the RAID primary storage devices206band206c, respectively, in the illustrated example. As will be appreciated by one of skill in the art in possession of the present disclosure, the multi-cast locking request710may be provided via a posted memory write transaction in order to fit into the conventional multicast paradigm, although other transactions that fit the conventional multi-cast paradigm will fall within the scope of the present disclosure as well. Thus, at block408, the RAID data storage engine304in the RAID primary storage device206bmay receive the locking request712avia its communication system310, and the RAID data storage engine304in the RAID primary storage device206cmay receive the locking request712bvia its communication system310.

The method400then proceeds to decision block410where it is determined whether a locking confirmation has been received. In an embodiment, at decision block410and following receiving the locking requests712aand712b, the RAID data storage engine304in the RAID primary storage devices206band206cmay process the locking requests712aand712bin order to attempt to lock out further writes to particular data stripes in their storage subsystems306(e.g., locking out writes to the data stripe including the primary data500band500c, while still allowing writes to be processed for regions in the storage subsystems306that store data in other data stripes.) As will be appreciated by one of skill in the art in possession of the present disclosure, the processing of a locking request by a RAID data storage device may result in a successful locking operation that prevents further writes to the storage subsystem306in that RAID data storage device, a failed locking operation that does not prevent further writes to the storage subsystem306in that RAID data storage device, or a partial locking operation that prevents some writes to the storage subsystem306in that RAID data storage device.

As such, the RAID data storage engines304in the RAID primary storage devices206band206cmay be configured to report the status of their respective locking operations, and the RAID data storage engine304in the RAID primary storage device206amay monitor for the status of the locking operation performed by the RAID primary storage devices206band206c. While not discussed in detail below, one of skill in the art in possession of the present disclosure will appreciate that a failed locking operation or partial locking operation that does not lock primary data (which is included in the data stripe having the primary data that is being updated) will prevent the updating of parity data in the same data stripe. In such a situation, the RAID primary data storage device206arequesting the locking operations will retry the locking requests until locking operations on the RAID primary data storage devices206band206chave been performed. Such failed locking operations may occur when a write operation is being performed on the same LBA range in the storage subsystem306for which the lock is being requested and, as such, retries of the locking request will typically result in a successful lock.

If, at decision block410, it is determined that a locking confirmation has not been received, the method400returns to decision block410. As such, the method400may loop such that the RAID data storage engine304in the RAID primary storage device206amay monitor for the status of the locking operation performed by the RAID primary storage devices206band206c(and may repeat locking requests in the event of failed locking operations as discussed above) until successful or partial locking operations are performed by the RAID primary storage devices206band206cin a manner that ensures that the data update operations discussed below may be performed without producing invalid “updated” parity data.

If, at decision block410, it is determined that a locking confirmation has been received, the method400proceeds to block412where the first RAID data storage device performs the data update operations. In an embodiment, in response to performing successful or partial locking operations in a manner that ensures that the data update operations discussed below may be performed without producing invalid “updated” parity data (i.e., locks are acquired such that no writes may occur on regions of the storage subsystems306that include the primary data500band500c), the RAID data storage engine304in the RAID primary storage device206bmay generate and transmit a locking confirmation714a, and the RAID data storage engine304in the RAID primary storage device206cmay generate and transmit a locking confirmation714b, which may cause a locking confirmation716to be transmitted to the RAID primary data storage device206a, as illustrated inFIG. 7D. For example, the switch device203may be configured to gather locking confirmations from the RAID primary data storage devices to which the locking requests were transmitted (e.g., the locking confirmations714aand714bfrom the RAID primary data storage devices206band206cto which the locking requests712aand712bwere transmitted) and, once those locking confirmations are received, may transmit a single locking confirmation (e.g., the locking confirmation716) to the RAID primary data storage device206a. As such, the switch device203may wait for each RAID primary data storage device to which a locking request was transmitted to acknowledge successful or partial locking operations before the locking confirmation is transmitted to the RAID primary data storage device that requested the locking. One of skill in the art in possession of the present disclosure will appreciate that the operations discussed above may be performed similarly to implicit routing/“gathered and routed” methods for Transaction Layer Packets (TLPs), but may require the defining of a new TLP and message (i.e., enhancements to PCIe).

As such, the RAID data storage engine304in the RAID data storage device206amay receive the locking confirmation716at decision block410and, in response, may proceed to block412to continue performing the data update operations while the RAID primary data storage devices206band206care locked from further write operations to the regions of their storage subsystems306that store the primary data500band500c. With reference toFIG. 7E, second operation(s) in the first subset of operations included in the multi-step command702for performance by the RAID primary data storage device206amay include the calculation of interim parity data by the RAID primary data storage device206a. As discussed above, the updating of “current” primary data with “updated” primary data in the RAID primary data storage device206achanges the data stored on the RAID primary data storage device206afor the data stripe that includes the primary data500band500c, and the parity data502, and thus requires an update to the parity data502stored in the storage subsystem306on the RAID parity data storage device206d/300. Furthermore, the change in the data stored on the RAID primary data storage device206aresulting from the updating of the “current” primary data500awith the “updated” primary data706may be calculated via the performance of an XOR operation on the “current” primary data500aand the “updated” primary data706to produce interim parity data.

As such, at block406, the RAID data storage engine304in the RAID primary data storage device206a/300may perform XOR operations718on the “current” primary data500aand the “updated” primary data706to generate interim parity data722, and perform a write operation720to store that interim parity data722in its second buffer subsystem308b(e.g., a CMB subsystem), as illustrated inFIG. 7E. As will be appreciated by one of skill in the art in possession of the present disclosure, in some embodiments the generation of the interim parity data may be performed while the locking operations are being performed on the RAID primary data storage devices206band206c. Similarly as discussed above, in response to beginning any of the second operation(s) in the first subset of operations, the RAID data storage engine304in the RAID primary data storage device206a/300may add journal entries corresponding to those first subset of operations to the journal708, and in response to completing any of the first subset of operations associated with the multi-step command702, the RAID data storage engine304in the RAID primary data storage device206a/300may remove journal entries corresponding to those first subset of operations from the journal708. As will be appreciated by one of skill in the art in possession of the present disclosure, the XOR operations to generate the interim parity data722and the write operations on the interim parity data722discussed above may be performed before the locking requests and confirmations illustrated inFIGS. 7C and 7Din order to, for example, reduce the time period in which the RAID primary data storage devices206band206care locked to minimize the impact on the performance of those RAID primary data storage devices206band206c.

With reference toFIG. 7F, third operation(s) in the first subset of operations included in the multi-step command702for performance by the RAID primary data storage device206amay include the updating of “current” primary data with “updated” primary data. In an embodiment, at block412, the RAID data storage engine304in the RAID primary data storage device206a/300may perform an overwrite operation724in order to overwrite the “current” primary data500astored on its storage subsystem306with the “updated” primary data706stored in its second buffer subsystem308b, as illustrated inFIG. 7F. Similarly as discussed above, in response to beginning any of the third operation(s) in the first subset of operations, the RAID data storage engine304in the RAID primary data storage device206a/300may add journal entries corresponding to those first subset of operations to the journal708, and in response to completing any of the first subset of operations associated with the multi-step command702, the RAID data storage engine304in the RAID primary data storage device206a/300may remove journal entries corresponding to those first subset of operations from the journal708.

In this embodiment, block412of the method400may include the first RAID data storage device performing direct command operations with a second RAID data storage device in order to cause the second RAID data storage device to perform the data update operations. As discussed above, following the receiving of the “process write” multi-step command702, the RAID data storage engine304in the RAID primary data storage device206a/300may identify the steps in the “process write” multi-step command702and determine the second subset of operations in those steps that must be performed by the RAID parity data storage device206d. In the example below, the second subset of operations includes the updating of “current” parity data with “updated” parity data, but one of skill in the art in possession of the present disclosure will appreciate that subsets of operations performed by other RAID data storage devices may include a variety of operations that will fall within the scope of the present disclosure as well.

With reference toFIG. 7G, in an embodiment of block412, the RAID data storage engine304in the RAID primary data storage device206amay generate a peer-to-peer multi-step command that instructs the updating of “current” parity data with “updated” parity data. As will be appreciated by one of skill in the art in possession of the present disclosure, the generation of the peer-to-peer multi-step command may include the performance of any of the pre-command operations described in U.S. patent application Ser. No. 16/832,348, filed on Mar. 27, 2020, and the peer-to-peer multi-step command may include any information needed for the RAID parity data storage device206dto perform the functionality described below. The RAID data storage engine304in the RAID primary data storage device206amay then perform direct command operations726to transmit the peer-to-peer multi-step command via the switch device203to the RAID parity data storage device206d, as illustrated inFIG. 7G. As will be appreciated by one of skill in the art in possession of the present disclosure, the direct command operations726may include any of the operations described in U.S. patent application Ser. No. 16/838,224, filed on Apr. 2, 2020, that allow the RAID primary data storage device206ato transmit the peer-to-peer multi-step command directly to the RAID parity data storage device206d.

In this embodiment, block412of the method400may include the second RAID data storage device performing a second subset of operations associated with the multi-step command702. In an embodiment, following the receiving of the peer-to-peer multi-step command by the RAID data storage engine304in the RAID parity data storage device206d/300via its communication subsystem310, the RAID data storage engine304in the RAID parity data storage device206d/300may identify the second subset of operations included in the peer-to-peer multi-step command for performance by the RAID parity data storage device206d.

With reference toFIG. 7H, first operation(s) in the second subset of operations included in the peer-to-peer multi-step command for performance by the RAID parity data storage device206dmay include the retrieval of interim parity data from the RAID primary data storage device206a. As discussed above, the updating of “current” primary data with “updated” primary data in the RAID primary data storage device206achanges the data stored on the RAID primary data storage device206afor the data stripe that includes the primary data500band500cand the parity data502, and thus requires an update to the “current” parity data502stored in the storage subsystem306on the RAID parity data storage device206d/300. Furthermore, the change in the data stored on the RAID primary data storage device206aresulting from the updating of the “current” primary data500awith the “updated” primary data706was previously calculated via the performance of an XOR operation on the “current” primary data500aand the “updated” primary data706to produce the interim parity data722stored in the second buffer subsystem308b(e.g., a CMB subsystem) in the RAID data storage device206a. As such, at block410, the RAID data storage engine304in the RAID parity data storage device206b/300may perform DMA operations728that access the interim parity data722in the second buffer subsystem308bin the RAID primary data storage device206a, and may write that interim parity data722to a first buffer subsystem308a(e.g., a device buffer) in the RAID parity data storage device206d/300, as illustrated inFIG. 7H.

With reference toFIG. 7I, second operation(s) in the second subset of operations included in the peer-to-peer multi-step command for performance by the RAID parity data storage device206dmay include the calculation of “updated” parity data. As discussed above, the change in the data stored on the RAID primary data storage device206aresulting from the updating of the “current” primary data500awith the “updated” primary data706may be calculated via the performance of an XOR operation on the “current” primary data500aand the “updated” primary data706to produce the interim parity data722, and an XOR operation performed on “current” parity data and that interim parity data722will produce “updated” parity data that takes into account the “updated” primary data706. As such, at block412, the RAID data storage engine304in the RAID parity data storage device206d/300may perform an XOR operation730on the “current” parity data502in its storage system206and the interim parity data722in its first buffer subsystem308ato produce “updated” parity data734, and may perform a write operation732to write the “updated” parity data734to its second buffer subsystem308b(e.g., a CMB subsystem), as illustrated inFIG. 7I.

As will be appreciated by one of skill in the art in possession of the present disclosure, impacts on the performance of the RAID data storage system200may be decreased by only locking the RAID primary data storage devices206band206cduring the retrieval of the interim parity data722and the XOR operations on the interim parity data722and the “current” parity data502to generate the “updated” parity data734. As such, in some embodiments, the RAID primary data storage device206amay transmit the locking requests discussed above at substantially the same time as transmitting the multi-step command discussed above.

With reference toFIG. 7J, third operation(s) in the second subset of operations included in the peer-to-peer multi-step command for performance by the RAID parity data storage device206dmay include the updating of “current” parity data with “updated” parity data. In an embodiment, at block412, the RAID data storage engine304in the RAID parity data storage device206d/300may perform an overwrite operation736in order to overwrite the “current” parity data502stored on its storage subsystem306with the “updated” parity data734stored in its second buffer subsystem308b, as illustrated inFIG. 7J. While not illustrated or described above, one of skill in the art in possession of the present disclosure will recognize that in some embodiments, the performance of the second subset of operations performed by the RAID parity data storage device206dmay include journal tracking and updating that is similar to that described above for the first subset of operations performed by the RAID primary data storage device206a. For example, each of the first operation(s), second operation(s), and third operation(s) performed as part of the second subset of operations by the RAID parity data storage device206dmay include the RAID parity data storage device206dsending status messages (e.g., an “operation begun” status, an “operation completed” status, etc.) to the RAID primary data storage device206aso that the RAID primary data storage device206amay update the journal708for those operations as they are performed.

While the method400is illustrated and described above with blocks406,408, and410being performed in sequence, those blocks may be performed in different orders, at the same time, and/or in other manners that will fall within the scope of the present disclosure as well. For example, after receiving the multi-step command702, the RAID primary data storage device206amay begin performing the first subset of operations associated with the multi-step command702. The RAID primary data storage device206amay then perform the direct command operations with the RAID parity data storage device206donce the interim parity data722data has been generated (or will soon be generated) so that the RAID parity data storage device206dmay begin performing the second subset of operations associated with the multi-step command702(e.g., calculating “updated” parity data and overwriting “current” parity data with the “updated” parity data) while the RAID primary data storage device206acompletes the first subset of operations associated with the multi-step command702(e.g., overwriting “current” primary data with “updated” primary data.) As such, one of skill in the art in possession of the present disclosure will appreciate that the autonomous operations by the RAID data storage devices206a-206dmay be performed in a variety of manners that may increase the efficiency and speed of those operations while remaining within the scope of the present disclosure.

The method400then proceeds to decision block414where it is determined whether the data update operations have been completed. In an embodiment, at decision block414, the RAID data storage engine304in the RAID primary data storage device206a/300may monitor its performance of the first subset of operations associated with the multi-step command702, and the performance by the RAID parity data storage device206dof the second subset of operations associated with the multi-step command702, to determine whether they have been completed. As discussed above, in response to completing any of the first subset of operations associated with the multi-step command702, the RAID data storage engine304in the RAID primary data storage device206a/300may remove journal entries corresponding to those first subset of operations from the journal708. If, at decision block412, it is determined that all of the first subset of operations and the second subset of operations have not been completed, the method400returns to decision block412. As such, the method400may loop such that the data update operations associated with the multi-step command702are performed (e.g., by the RAID primary data storage device206aand the RAID parity data storage device206din this example) until they are completed.

If at decision block414, it is determined that the data update operations have been completed, the method400proceeds to block416where the first RAID data storage device transmits an unlocking request to the second RAID data storage device(s). In an embodiment, at decision block414, the RAID data storage engine304in the RAID primary data storage device206amay determine that is has completed the first subset of operations, and that a completion communication has been received from the RAID parity data storage device206d. For example, at decision block414and in response to transmitting the peer-to-peer multi-step command to the RAID parity data storage device206d, the RAID data storage engine304in the RAID primary data storage device206a/300may monitor for a completion communication from the RAID parity data storage device206dthat indicates that the second subset of operations associated with the multi-step command702have been completed. As such, at decision block414and in response to completing the second subset of operations associated with the multi-step command702, the RAID data storage engine304in the RAID parity data storage device206d/300may perform direct command operations738to transmit a peer-to-peer completion communication via the switch device203and to the RAID primary data storage device206a, as illustrated inFIG. 7K. As will be appreciated by one of skill in the art in possession of the present disclosure, the direct command operations738may include any of the operations described in U.S. patent application Ser. No. 16/838,224, filed on Apr. 2, 2020, that allow the RAID parity data storage device206dto transmit the peer-to-peer completion communication directly to the RAID primary data storage device206a.

At block416and in response to the data update operations being completed. The RAID data storage engine304in the RAID primary data storage device206amay transmit unlocking requests to the RAID primary data storage devices206band206c. In some embodiments, the unlocking requests transmitted by the RAID primary data storage device206ato the RAID primary data storage devices206band206cmay be NVMe unlocking requests. However, as illustrated inFIG. 7L, in response to determining that is has completed the first subset of operations and that a completion communication has been received from the RAID parity data storage device206d, the RAID data storage engine304in the RAID primary data storage device206amay generate and transmit a multi-cast unlocking request740via its communication system310, which causes an unlocking request742ato be transmitted to the RAID primary data storage device206band an unlocking request742bto be transmitted to the RAID primary data storage device206c. As will be understood by one of skill in the art in possession of the present disclosure, following the updating of the “current” primary data500awith the “updated” primary data706and the updating of the “current” parity data502with the “updated” parity data734, the data stripe including the primary data706,500b, and500cand the parity data734is consistent, and changes may now be allowed to the primary data500band/or500cif necessary.

As such, at block416, the RAID data storage engine304in the RAID primary data storage device206amay generate and transmit the multi-cast unlocking request740to the multi-cast group (e.g., a PCIe multi-cast group) that includes the RAID primary storage devices206band206c. In response to receiving the multi-cast locking request, the switch device203may transmit unlocking requests to each RAID primary data storage device that is part of the multi-cast group except the originator of the multi-cast unlocking request740, resulting in the transmission of the locking requests742aand742bto the RAID primary storage devices206band206c, respectively, in the illustrated example. Similarly as discussed above, the multi-cast unlocking request740may be provided via a posted memory write transaction in order to fit into the conventional multicast paradigm, although other transactions that fit the conventional multi-cast paradigm will fall within the scope of the present disclosure as well. Thus, at block416, the RAID data storage engine304in the RAID primary data storage device206bmay receive the unlocking request742avia its communication system310and may operate to unlock the RAID primary data storage device206bin order to allow writes to its storage subsystem306. Similarly, the RAID data storage engine304in the RAID primary data storage device206cmay receive the unlocking request742bvia its communication system310and may operate to unlock the RAID primary data storage device206cin order to allow writes to its storage subsystem306. As will be appreciated by one of skill in the art in possession of the present disclosure, no unlocking confirmation is necessary for the RAID data storage engine304in the RAID primary data storage device206ain order to proceed with the method400subsequent to sending the multi-cast unlocking request740.

The method400proceeds to block418where the first RAID data storage device transmits a completion communication to the RAID storage controller device. As illustrated inFIG. 7M, following the completion of the data update operations, the RAID data storage engine304in the RAID primary data storage device206amay generate and transmit a completion communication744via its communication system310and the switch device203to the RAID storage controller device204that indicates that the multi-step command702has been completed, and may remove the journal entries/journal708associated with the multi-step command702. As will be appreciated by one of skill in the art in possession of the present disclosure, in some embodiments the completion communication744may be transmitted in parallel with the multi-cast unlocking request740discussed above. Furthermore, as illustrated inFIG. 7N, in response to receiving the completion communication from the RAID primary data storage device206a, the RAID storage controller engine in the RAID storage controller device204may generate and transmit a completion communication746via the switch device203to the host system202that indicates that the write command700has been completed, and may remove the journal entries/journal in the RAID storage controller device204that are associated with the write command700.

While only an example of a “process write” operation has been described, one of skill in the art in possession of the present disclosure will recognize how the autonomous locking operations described above may be utilized in other operations while remaining within the scope of the present disclosure as well. For example, the autonomous locking operations discussed above may be utilized in the “degraded read” operations, “degraded write” operations, and/or other operations described in U.S. patent application Ser. No. 16/839,428, filed on Apr. 3, 2020, as well as any other data transfer operations (e.g., mirrored RAID volume operations performed in RAID 1 and RAID 10 configurations) that would be apparent to one of skill in the art in possession of the present disclosure.

Thus, systems and methods have been described that provide for autonomous locking operations by RAID data storage devices in a RAID data storage system in order to allow a stripe of data stored on those RAID data storage devices to be updated. For example, first RAID data storage devices may store data that is included in a data stripe, and a second RAID data storage device coupled to the first RAID data storage device may receive a command to perform a data update operation on a subset of data that is included in the data stripe. In response, the first RAID data storage device may transmit a locking request to each first RAID data storage device and receive a locking confirmation that indicates that each first RAID data storage device is locked. In response, the second RAID data storage device may complete data update operation on the subset of data that is included in the data stripe, and then transmit an unlocking request to each first RAID data storage device to cause each first RAID data storage device to unlock. The first RAID data storage device may then transmit a completion communication that indicates that the data update operation has been performed. As such, orchestration RAID storage-device-assisted data updates by RAID storage controller devices is substantially reduced by allowing RAID data storage devices to autonomously lock in order to satisfy the requirements of a data update command. As will be appreciated by one of skill in the art in possession of the present disclosure, while the discussion above involves RAID 5 operations (e.g., a RAID 5 write operation in the example above), other types of RAID operations (e.g., RAID 6 operations such as a RAID 6 write operation) will benefit from the autonomous RAID data storage device locking techniques described herein, and thus will fall within the scope of the present disclosure as well.