# US 2021/0240375 A1 · Host-based transfer of input-output operations from kernel space block device to user space block device

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0240375 A1
- Document ID: US20210240375A1
- Status: Published application
- Kind: A1
- Application number: 16/777,162
- Filed: 2020-01-30
- Published: 2021-08-05
- Earliest claimed: 2020-01-30
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Sanjib Mallick; Md Haris Iqbal; Kundan Kumar
- Web page: https://patentgrep.com/patent/US20210240375A1

## CPC

- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 9/505: {considering the load}
- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An apparatus in one embodiment comprises a host device comprising a processor coupled to memory. The host device is configured to communicate over a network with at least one storage system. The host device is further configured to generate a user space block device and to generate a kernel space block device corresponding to the user space block device. The host device is further configured to receive an input-output operation at the kernel space block device from an application executing on the host device and to transfer the input-output operation from the kernel space block device to the corresponding user space block device. The host device is further configured to submit the input-output operation to the at least one storage system based at least in part on the user space block device.

## Claims

### Claim 1

An apparatus comprising:
a host device comprising a processor coupled to memory, the host device being configured to communicate over a network with at least one storage system, wherein the host device is further configured:
to generate a user space block device;
to generate a kernel space block device corresponding to the user space block device;
to receive an input-output operation at the kernel space block device from an application executing on the host device;
to transfer the input-output operation from the kernel space block device to the corresponding user space block device; and
to submit the input-output operation to the at least one storage system based at least in part on the user space block device.

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein the user space block device resides in a user space of the host device and comprises information about at least one path from the host device to a given logical volume of the at least one storage system.

### Claim 3 (depends on 2)

The apparatus of claim 2 wherein the host device further comprises communication hardware that is configured to communicate with the at least one storage system, the user space block device being configured to communicate with the communication hardware directly from the user space of the host device.

### Claim 4 (depends on 2)

The apparatus of claim 2 wherein:
the host device comprises input-output load balancing and submission functionality residing in the user space; and
submitting the input-output operation to the at least one storage system based at least in part on the user space block device comprises submitting the input-output operation to the at least one storage system based at least in part on the user space block device and the input-output load balancing and submission functionality residing in the user space.

### Claim 5 (depends on 2)

The apparatus of claim 2 wherein kernel space block device resides in a kernel space of the at least one host device.

### Claim 6 (depends on 5)

The apparatus of claim 5 wherein the input-output operation is submitted to the at least one storage system from the user space without utilizing functionality in the kernel space.

### Claim 7 (depends on 5)

The apparatus of claim 5 wherein the host device is configured to transfer the input-output operation from the kernel space block device to the user space block device based at least in part on at least one communication protocol that is configured to transfer data between the user space and the kernel space of the host device.

### Claim 8

A method comprising:
generating a user space block device;
generating a kernel space block device corresponding to the user space block device;
receiving an input-output operation at the kernel space block device from an application executing on a host device;
transferring the input-output operation from the kernel space block device to the corresponding user space block device; and
submitting the input-output operation to the at least one storage system based at least in part on the user space block device;
wherein the method is implemented by the host device, the host device comprising a processor coupled to a memory.

### Claim 9 (depends on 8)

The method of claim 8 wherein the user space block device resides in a user space of the host device and comprises information about at least one path from the host device to a given logical volume of the at least one storage system.

### Claim 10 (depends on 9)

The method of claim 9, wherein the host device further comprises communication hardware that is configured to communicate with the at least one storage system, the user space block device being configured to communicate with the communication hardware directly from the user space of the host device.

### Claim 11 (depends on 9)

The method of claim 9, wherein:
the host device comprises input-output load balancing and submission functionality residing in the user space; and
submitting the input-output operation to the at least one storage system based at least in part on the user space block device comprises submitting the input-output operation to the at least one storage system based at least in part on the user space block device and the input-output load balancing and submission functionality residing in the user space.

### Claim 12 (depends on 9)

The method of claim 9, wherein kernel space block device resides in a kernel space of the at least one host device.

### Claim 13 (depends on 11)

The method of claim 11, wherein the input-output operation is submitted to the at least one storage system from the user space without utilizing functionality in the kernel space.

### Claim 14 (depends on 11)

The method of claim 11, wherein the host device is configured to transfer the input-output operation from the kernel space block device to the user space block device based at least in part on at least one communication protocol that is configured to transfer data between the user space and the kernel space of the host device.

### Claim 15

A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by a host device comprising a processor coupled to a memory, causes the host device:
to generate a user space block device;
to generate a kernel space block device corresponding to the user space block device;
to receive an input-output operation at the kernel space block device from an application executing on the host device;
to transfer the input-output operation from the kernel space block device to the corresponding user space block device; and
to submit the input-output operation to the at least one storage system based at least in part on the user space block device.

### Claim 16 (depends on 15)

The computer program product of claim 15 wherein the user space block device resides in a user space of the host device and comprises information about at least one path from the host device to a given logical volume of the at least one storage system.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the host device further comprises communication hardware that is configured to communicate with the at least one storage system, the user space block device being configured to communicate with the communication hardware directly from the user space of the host device.

### Claim 18 (depends on 16)

The computer program product of claim 16, wherein:
the host device comprises input-output load balancing and submission functionality residing in the user space; and
submitting the input-output operation to the at least one storage system based at least in part on the user space block device comprises submitting the input-output operation to the at least one storage system based at least in part on the user space block device and the input-output load balancing and submission functionality residing in the user space.

### Claim 19 (depends on 16)

The computer program product of claim 16, wherein kernel space block device resides in a kernel space of the at least one host device and wherein the input-output operation is submitted to the at least one storage system from the user space without utilizing functionality in the kernel space.

### Claim 20 (depends on 19)

The computer program product of claim 19, wherein the host device is configured to transfer the input-output operation from the kernel space block device to the user space block device based at least in part on at least one communication protocol that is configured to transfer data between the user space and the kernel space of the host device.
