Reservations over multiple paths on NVMe over fabrics
First Claim
1. A method comprising:
- receiving, by a storage drive and from a storage controller, a modified first reservation command comprising a first logical unit identifier, wherein a first reservation command comprising a first host identifier to identify a first host controller was previously received by the storage controller from the first host controller in a multi-host storage system, wherein the first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier, wherein the first reservation command is compatible with a Nonvolatile Memory Express (NVMe) over Fabrics standard, and the modified first reservation command is compatible with a NVMe standard;
responsive to receiving the modified first reservation command, identifying, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command; and
granting, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage.
1 Assignment
0 Petitions
Accused Products
Abstract
A method includes receiving, by a storage drive and from a storage controller, a modified first reservation command including a first logical unit identifier. The first reservation command includes a first host identifier to identify a first host controller was previously received by the storage controller from the first host controller. The first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier. The method also includes responsive to receiving the modified first reservation command, identifying, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command. The method includes granting, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage.
50 Citations
15 Claims
-
1. A method comprising:
-
receiving, by a storage drive and from a storage controller, a modified first reservation command comprising a first logical unit identifier, wherein a first reservation command comprising a first host identifier to identify a first host controller was previously received by the storage controller from the first host controller in a multi-host storage system, wherein the first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier, wherein the first reservation command is compatible with a Nonvolatile Memory Express (NVMe) over Fabrics standard, and the modified first reservation command is compatible with a NVMe standard; responsive to receiving the modified first reservation command, identifying, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command; and granting, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method comprising:
-
receiving, by a storage drive and from a storage controller, a modified first reservation command comprising a first logical unit identifier, wherein a first reservation command comprising a first host identifier to identify a first host controller was previously received by the storage controller from the first host controller in a multi-host storage system, wherein the first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier; responsive to receiving the modified first reservation command, identifying, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command; granting, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage; receiving, from the second host controller and by the storage drive, a second reservation command to acquire the access to the storage drive, the reservation command comprising a second host identifier to identify the second host controller; modifying, by the storage drive, the second reservation command by replacing the second host identifier with a second logical unit identifier that is associated with the second host controller and that identifies a second logical unit of storage of the storage drive; sending the modified second reservation command comprising the second logical unit identifier to the storage drive; and responsive to receiving the modified second reservation command, denying a reservation made using the modified second reservation command based on the reservation held for the first logical unit. - View Dependent Claims (8)
-
-
9. A method comprising:
-
receiving, by a storage drive and from a storage controller, a modified first reservation command comprising a first logical unit identifier, wherein a first reservation command comprising a first host identifier to identify a first host controller was previously received by the storage controller from the first host controller in a multi-host storage system, wherein the first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier; responsive to receiving the modified first reservation command, identifying, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command; granting, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage; receiving, from the first host controller, an input-output (I/O) command to access to the storage drive, the I/O command comprising the first host identifier to identify the first host controller; modifying, by the storage drive, the I/O command by replacing the first host identifier with the first logical unit identifier that is associated with the first host controller; sending the modified I/O command comprising the first logical unit identifier to the storage drive; determining, by the storage drive, that the first logical identifier of the modified I/O command matches a logical unit identifier for which the reservation was granted; and responsive to determining that the first logical identifier of the modified I/O command matches a logical unit identifier for which the reservation was granted, performing an I/O action specified by the modified I/O command.
-
-
10. A multi-host storage system comprising:
-
a memory; a storage controller, communicatively coupled to the memory, to; receive, from a first host controller of the multi-host storage system, a first reservation command to acquire access to a storage drive that is shared by a second host controller of the multi-host storage system, the reservation command comprising a first host identifier to identify the first host controller; modify the first reservation command by replacing the first host identifier with a first logical unit identifier that is associated with the first host controller and that identifies a first logical unit of storage of the storage drive; and send the modified first reservation command comprising the first logical unit identifier to a drive controller of the storage drive; and a drive controller, communicatively coupled to the storage controller, to; responsive to receiving the modified first reservation command, grant a reservation for the access to the storage drive on behalf of the first host controller based on the first logical unit identifier, wherein to grant the reservation for the access to the storage drive on behalf of the first host controller based on the first logical unit identifier further, the drive controller to; hold the reservation for the first logical unit of storage of the storage drive based on the modified first reservation comprising the first logical unit identifier; associate a second logical unit of storage of the storage drive with the reservation held for the first logical unit of storage; and grant access to the first logical unit of storage and the second logical unit of storage of the storage drive on behalf of the first host controller, rather than the second host controller, based on the reservation for the first logical unit; wherein the storage controller is further to; receive, from the second host controller, a second reservation command to acquire the access to the storage drive, the reservation command comprising a second host identifier to identify the second host controller; modify the second reservation command by replacing the second host identifier with a second logical unit identifier that is associated with the second host controller and that identifies a second logical unit of storage of the storage drive; and send the modified second reservation command comprising the second logical unit identifier to the drive controller of the storage drive; and the drive controller further to; responsive to receiving the modified second reservation command, deny a reservation made using the modified second reservation command based on the reservation held for the first logical unit. - View Dependent Claims (11, 12)
-
-
13. A non-transitory computer-readable medium comprising instructions that, when executed by a multi-host storage system, cause the multi-host storage system to:
-
receive, by a storage drive of the multi-host storage system, a modified first reservation command comprising a first logical unit identifier, wherein a first reservation command comprising a first host identifier to identify a first host controller was previously received by a storage controller from the first host controller in the multi-host storage system, wherein the first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier; responsive to receiving the modified first reservation command, identify, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command; grant, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage, wherein to grant the reservation, the multi-host storage system to; hold, by the storage drive, the reservation for the first logical unit of storage of the storage drive based on the modified first reservation comprising the first logical unit identifier; associate, by the storage drive, a second logical unit of storage of the storage drive with the reservation held for the first logical unit of storage; and grant, by the storage drive, access to the first logical unit of storage and the second logical unit of storage of the storage drive on behalf of the first host controller, rather than a second host controller, based on the reservation for the first logical unit; wherein the multi-host storage system further to; receive, from the second host controller of the multi-host storage system and by the storage drive, a second reservation command to acquire the access to the storage drive, the reservation command comprising a second host identifier to identify the second host controller; modify, by the storage drive, the second reservation command by replacing the second host identifier with a second logical unit identifier that is associated with the second host controller and that identifies a second logical unit of storage of the storage drive; send the modified second reservation command comprising the second logical unit identifier to the storage drive; and responsive to receiving the modified second reservation command, deny a reservation made using the modified second reservation command based on the reservation held for the first logical unit. - View Dependent Claims (14)
-
-
15. A non-transitory computer-readable medium comprising instructions that, when executed by a multi-host storage system, cause the multi-host storage system to:
-
receive, by a storage drive of the multi-host storage system, a modified first reservation command comprising a first logical unit identifier, wherein a first reservation command comprising a first host identifier to identify a first host controller was previously received by a storage controller from the first host controller in the multi-host storage system, wherein the first reservation command was modified by the storage controller to replace the first host identifier with the first logical unit identifier; responsive to receiving the modified first reservation command, identify, by the storage drive, a first logical unit of storage based on the first logical unit identifier of the modified reservation command; grant, by the storage drive, a reservation for access to the storage drive on behalf of the first host controller by associating the reservation for the first logical unit with a second logical unit of storage; receive, from the first host controller, an input-output (I/O) command to access to the storage drive, the I/O command comprising the first host identifier to identify the first host controller; modify, by the storage drive, the I/O command by replacing the first host identifier with the first logical unit identifier that is associated with the first host controller; send the modified I/O command comprising the first logical unit identifier to the storage drive; determine, by the storage drive, that the first logical identifier of the modified I/O command matches a logical unit identifier for which the reservation was granted; and responsive to determining that the first logical identifier of the modified I/O command matches a logical unit identifier for which the reservation was granted, perform an I/O action specified by the modified I/O command.
-
Specification