# US 11,113,247 B1 · Routing I/O requests to improve read/write concurrency

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

- Number: US 11,113,247 B1
- Document ID: US11113247B1
- Status: Granted
- Kind: B1
- Application number: 15/150,649
- Filed: 2016-05-10
- Granted: 2021-09-07
- Earliest claimed: 2016-05-10
- Assignees: Veritas Technologies LLC
- Applicants: Veritas Technologies LLC
- Inventors: Yingsong Jia; Xiangrui Liu; Hong Yu Jia; Shengzhao Li
- Web page: https://patentgrep.com/patent/US11113247B1

## CPC

- G06F 16/176: Support for shared access to files; File sharing support
- G06F 16/1767: {Concurrency control, e.g. optimistic or pessimistic approaches}
- G06F 16/122: {using management policies (point-in-time backing up or restoration of persistent data G06F11/1446; file migration policies for HSM systems G06F16/185)}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/182: Distributed file systems
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems, apparatuses, methods, and computer readable mediums for implementing an I/O router to route requests based on characteristics of the requests. The I/O router may receive requests targeting a single file, and the I/O router may route requests to multiple extent maps based on characteristics of the requests. For example, requests of a first size may be mapped to a first extent map, requests of a second size may be mapped to a second extent map, requests of a third size may be mapped to a third extent map, and so on. Additionally, the system may utilize different deduplication policies for the different types of requests which are mapped to different extent maps.

## Claims

### Claim 1

A system comprising:
a memory; and
one or more processors coupled to the memory; and
circuitry, wherein the circuitry is configured to:
receive a plurality of requests targeting a single file stored in an extent-based file system;
identify a plurality of extent maps that correspond to the single file;
determine which extent map of the plurality of extent maps to use for routing each of the plurality of requests, based on one or more characteristics of each of the plurality of requests;
route a given request of the plurality of requests to a first extent map, responsive to determining a size of the given request is greater than a first threshold;
route the given request to a second extent map different from the first extent map responsive to determining a size of the given request is less than the first threshold;
access the first extent map as an initial map used to identify first physical storage locations storing actual data corresponding to the first extent; and
access the second extent map, simultaneous with the access of the first extent map, as an initial map used to identify second physical storage locations storing actual data corresponding to the second extent.

### Claim 2 (depends on 1)

The system as recited in claim 1, wherein the circuitry is further configured to:
route a first request of the plurality of requests to the first extent map based on one or more characteristics of the first request; and
route a second request of the plurality of requests to the second extent map based on one or more characteristics of the second request, wherein the second extent map is different from the first extent map.

### Claim 3 (depends on 2)

The system as recited in claim 2, wherein the circuitry is configured to:
utilize a first deduplication policy for the first request routed to the first extent map targeting the single file; and
utilize a second deduplication policy for the second request routed to the second extent map targeting the single file, wherein the second deduplication policy is different from the first deduplication policy.

### Claim 4 (depends on 1)

The system as recited in claim 1, wherein the one or more characteristics comprise a size of a given request, and wherein the circuitry is configured to:
determine a size of each of at least two requests;
determine which extent map of the plurality of extent maps that correspond to the single file to use for routing the at least two requests, based at least in part on a size of each of the at least two requests; and
concurrently route the at least two requests to the single file using at least two extent maps of the plurality of extent maps.

### Claim 5 (depends on 1)

The system as recited in claim 1, wherein the circuitry is configured to route the given request to the second extent map in further response to determining a size of the given request is greater than or equal to a second threshold, and the circuitry is further configured to
route the given request to a third extent map different from the first extent map and the second extent map responsive to determining a size of the given request is less than the second threshold.

### Claim 6 (depends on 1)

The system as recited in claim 1, wherein the circuitry is configured to access one or more of the plurality of extent maps as an only map between an extent of a plurality of extents of the single file and physical storage locations storing actual data of the extent.

### Claim 7 (depends on 1)

The system as recited in claim 1, wherein the circuitry is configured to receive the plurality of requests from a software application, and wherein the software application is a database application.

### Claim 8

A method comprising:
receiving a plurality of requests targeting a single file stored in an extent-based file system;
identifying a plurality of extent maps that correspond to the single file;
determining which extent map of the plurality of extent maps to use for routing each of the plurality of requests;
routing a given request of the plurality of requests to a first extent map, responsive to determining a size of the given request is greater than a first threshold;
routing the given request to a second extent map different from the first extent map responsive to determining a size of the given request is less than the first threshold;
accessing the first extent map as an initial map used to identify first physical storage locations storing actual data corresponding to the first extent; and
accessing the second extent map, simultaneous with the access of the first extent map, as an initial map used to identify second physical storage locations storing actual data corresponding to the second extent.

### Claim 9 (depends on 8)

The method as recited in claim 8, further comprising:
routing a first request of the plurality of requests to the first extent map based on one or more characteristics of the first request; and
routing a second request of the plurality of requests to the second extent map based on one or more characteristics of the second request, wherein the second extent map is different from the first extent map.

### Claim 10 (depends on 9)

The method as recited in claim 9, further comprising:
utilizing a first deduplication policy for the first request routed to the first extent map targeting the single file; and
utilizing a second deduplication policy for the second request routed to the second extent map targeting the single file, wherein the second deduplication policy is different from the first deduplication policy.

### Claim 11 (depends on 8)

The method as recited in claim 8, wherein the one or more characteristics comprise a size of a given request, and wherein the method comprises:
determining a size of each of at least two requests;
determining which extent map of the plurality of extent maps that correspond to the single file to use for routing the at least two requests, based at least in part on a size of each of the at least two requests; and
concurrently routing the at least two requests to the single file using at least two extent maps of the plurality of extent maps.

### Claim 12 (depends on 8)

The method as recited in claim 8, further comprising:
routing the given request to the second extent map in further response to determining a size of the given request is greater than or equal to a second threshold; and
routing the given request to a third extent map different from the first extent map and the second extent map responsive to determining a size of the given request is less than the second threshold.

### Claim 13 (depends on 8)

The method as recited in claim 8, further comprising accessing one or more of the plurality of extent maps as an only map between an extent of a plurality of extents of the single file and physical storage locations storing actual data of the extent.

### Claim 14 (depends on 8)

The method as recited in claim 8, further comprising receiving the plurality of requests from a software application, and wherein the software application is a database application.

### Claim 15

A non-transitory computer readable storage medium storing program instructions, wherein the program instructions are executable by a processor to:
receive a plurality of requests targeting a single file stored in an extent-based file system;
identify a plurality of extent maps that correspond to the single file;
determine which extent map of the plurality of extent maps to use for routing each of the plurality of requests, based on one or more characteristics of each of the plurality of requests;
route a given request of the plurality of requests to a first extent map, responsive to determining a size of the given request is greater than a first threshold;
route the given request to a second extent map different from the first extent map responsive to determining a size of the given request is less than the first threshold;
access the first extent map as an initial map used to identify first physical storage locations storing actual data corresponding to the first extent; and
access the second extent map, simultaneous with the access of the first extent map, as an initial map used to identify second physical storage locations storing actual data corresponding to the second extent.

### Claim 16 (depends on 15)

The non-transitory computer readable storage medium as recited in claim 15, wherein the program instructions are further executable by a processor to:
route a first request of the plurality of requests to the first extent map based on one or more characteristics of the first request; and
route a second request of the plurality of requests to the second extent map based on one or more characteristics of the second request, wherein the second extent map is different from the first extent map.

### Claim 17 (depends on 16)

The non-transitory computer readable storage medium as recited in claim 16, wherein the program instructions are further executable by a processor to:
utilize a first deduplication policy for the first request routed to the first extent map targeting the single file; and
utilize a second deduplication policy for the second request routed to the second extent map targeting the single file, wherein the second deduplication policy is different from the first deduplication policy.

### Claim 18 (depends on 15)

The non-transitory computer readable storage medium as recited in claim 15, wherein the one or more characteristics comprise a size of a given request, and wherein the program instructions are further executable by a processor to:
determine a size of each of at least two requests;
determine which extent map of the plurality of extent maps that correspond to the single file to use for routing the at least two requests, based at least in part on a size of each of the at least two requests; and
concurrently route the at least two requests to the single file using at least two extent maps of the plurality of extent maps.

### Claim 19 (depends on 15)

The non-transitory computer readable storage medium as recited in claim 15, wherein the program instructions are further executable by a processor to:
route the given request to the second extent map in further response to determining a size of the given request is greater than or equal to a second threshold; and
route the given request to a third extent map different from the first extent map and the second extent map responsive to determining a size of the given request is less than the second threshold.

### Claim 20 (depends on 15)

The non-transitory computer readable storage medium as recited in claim 15, wherein the program instructions are further executable by a processor to access one or more of the plurality of extent maps as an only map between an extent of a plurality of extents of the single file and physical storage locations storing actual data of the extent.
