US12579065B2ActiveUtilityA1

Lightweight kernel driver for virtualized storage

60
Assignee: RED HAT INCPriority: Dec 7, 2022Filed: Dec 7, 2022Granted: Mar 17, 2026
Est. expiryDec 7, 2042(~16.4 yrs left)· nominal 20-yr term from priority
G06F 3/067G06F 3/0635G06F 3/061G06F 13/1668G06F 2212/657G06F 12/08
60
PatentIndex Score
0
Cited by
14
References
20
Claims

Abstract

A routing table is requested from a storage device operatively coupled to the computing device, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of the storage device. An input/output (I/O) request is received from an application executing on the computing device, the I/O request comprising the virtual storage address. A modified I/O request is transmitted to the storage device based on the mapping of the routing table entry.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A method comprising:
 requesting, by a driver within a kernel space of an operating system (OS) of a computing device, a routing table from a storage system comprising a plurality of storage devices, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of a storage device in the plurality of storage devices;   receiving, by the driver within the kernel space of the OS, the routing table from the storage device responsive to requesting the routing table;   receiving an input/output (I/O) request from an application executing within a user space of the OS, the I/O request comprising the virtual storage address;   generating, by the driver within the kernel space of the OS, a modified I/O request including the destination storage address based on the routing table entry mapping the virtual storage address to the destination storage address; and   transmitting, by the driver within the kernel space of the OS, the modified I/O request to the storage device of the storage system based on the destination storage address included in the modified I/O request.   
     
     
         2 . The method of  claim 1 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the method further comprises:
 receiving an error response to the modified I/O request;   transmitting a request for an updated routing table to the first storage device; and   receiving a routing table update from the first storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of a second storage device.   
     
     
         3 . The method of  claim 2 , further comprising:
 retransmitting the modified I/O request to the second storage device based on the mapping of the second routing table entry.   
     
     
         4 . The method of  claim 1 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the method further comprises:
 determining that the first storage device is no longer available;   transmitting a request for an updated routing table to a second storage device; and   receiving a routing table update from the second storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of the second storage device.   
     
     
         5 . The method of  claim 1 , wherein the routing table is a copy of a second routing table maintained by the storage system. 
     
     
         6 . The method of  claim 1 , wherein the application comprises a containerized application executing within a container in the user space of the OS. 
     
     
         7 . The method of  claim 1 , wherein the method further comprises:
 receiving an I/O response and an indication of an invalid route in response to the modified I/O request;   transmitting the I/O response to the application executing on the computing device;   transmitting a request for an updated routing table to the storage device;   receiving a routing table update from the storage device; and   updating the routing table based on the routing table update.   
     
     
         8 . A computing device comprising:
 a memory; and   a processing device, operatively coupled to the memory, to:
 request, by a driver within a kernel space of an operating system (OS) of the computing device, a routing table from a storage system comprising a plurality of storage devices, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of a storage device in the plurality of storage devices; 
 receive, by the driver within the kernel space of the OS, the routing table from the storage device responsive to requesting the routing table; 
 receive an input/output (I/O) request from an application within a user space of the OS, the I/O request comprising the virtual storage address; 
 generate, by the driver within the kernel space of the OS, a modified I/O request including the destination storage address based on the routing table entry mapping the virtual storage address to the destination storage address; and 
 transmit, by the driver within the kernel space of the OS, the modified I/O request to the storage device of the storage system based on the destination storage address included in the modified I/O request. 
   
     
     
         9 . The computing device of  claim 8 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the processing device is further to:
 receive an error response to the modified I/O request;   transmit a request for an updated routing table to the first storage device; and   receive a routing table update from the first storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of a second storage device.   
     
     
         10 . The computing device of  claim 9 , wherein the processing device is further to:
 retransmit the modified I/O request to the second storage device based on the mapping of the second routing table entry.   
     
     
         11 . The computing device of  claim 8 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the processing device is further to:
 determine that the first storage device is no longer available;   transmit a request for an updated routing table to a second storage device; and   receive a routing table update from the second storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of the second storage device.   
     
     
         12 . The computing device of  claim 8 , wherein the routing table is a copy of a second routing table maintained by the storage system. 
     
     
         13 . The computing device of  claim 8 , wherein the application comprises a containerized application executing within a container in the user space of the OS. 
     
     
         14 . The computing device of  claim 8 , wherein the processing device is further to:
 receive an I/O response and an indication of an invalid route in response to the modified I/O request;   transmit the I/O response to the application executing on the computing device;   transmit a request for an updated routing table to the storage device;   receive a routing table update from the storage device; and   update the routing table based on the routing table update.   
     
     
         15 . A non-transitory computer-readable storage medium including instructions that, when executed by a processing device of a computing device, cause the processing device to:
 request, by a driver within a kernel space of an operating system (OS), a routing table from a storage system comprising a plurality of storage devices, the routing table comprising a routing table entry mapping a virtual storage address to a destination storage address of a storage device in the plurality of storage devices;   receive, by the driver within the kernel space of the OS, the routing table from the storage device responsive to requesting the routing table;   receive an input/output (I/O) request from an application executing within a user space of the OS, the I/O request comprising the virtual storage address;   generate, by the driver within the kernel space of the OS, a modified I/O request including the destination storage address based on the routing table entry mapping the virtual storage address to the destination storage address; and   transmit, by the driver within the kernel space of the OS, the modified I/O request to the storage device of the storage system based on the destination storage address included in the modified I/O request.   
     
     
         16 . The non-transitory computer-readable storage medium of  claim 15 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the instructions, when executed by the processing device, cause the processing device further to:
 receive an error response to the modified I/O request;   transmit a request for an updated routing table to the first storage device; and   receive a routing table update from the first storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of a second storage device.   
     
     
         17 . The non-transitory computer-readable storage medium of  claim 16 , wherein the instructions, when executed by the processing device, cause the processing device further to:
 retransmit the modified I/O request to the second storage device based on the mapping of the second routing table entry.   
     
     
         18 . The non-transitory computer-readable storage medium of  claim 15 , wherein the storage device is a first storage device, the routing table entry is a first routing table entry, and the destination storage address is a first destination storage address, and wherein the instructions, when executed by the processing device, cause the processing device further to:
 determine that the first storage device is no longer available;   transmit a request for an updated routing table to a second storage device; and   receive a routing table update from the second storage device, the routing table update comprising a second routing table entry mapping the virtual storage address to a second destination storage address of the second storage device.   
     
     
         19 . The non-transitory computer-readable storage medium of  claim 15 , wherein the application comprises a containerized application executing within a container in the user space of the OS. 
     
     
         20 . The non-transitory computer-readable storage medium of  claim 15 , wherein the instructions, when executed by the processing device, cause the processing device further to:
 receive an I/O response and an indication of an invalid route in response to the modified I/O request;   transmit the I/O response to the application executing on the computing device;   transmit a request for an updated routing table to the storage device;   receive a routing table update from the storage device; and   update the routing table based on the routing table update.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.