# US 12,117,989 B1 · Replication techniques with data copy avoidance

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

- Number: US 12,117,989 B1
- Document ID: US12117989B1
- Status: Granted
- Kind: B1
- Application number: 18/464,626
- Filed: 2023-09-11
- Granted: 2024-10-15
- Earliest claimed: 2023-09-11
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Alan L. Taylor; Nagapraveen Veeravenkata Seela; David Bernard
- Web page: https://patentgrep.com/patent/US12117989B1

## CPC

- G06F 16/2343: {Locking methods, e.g. distributed locking or locking implementation details}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques can include: receiving from a component a bufferless read request to read data of a storage object; opening a first transaction; acquiring locks of data pages including the read data; locking cache pages; storing the read data in the cache pages; sending to the component a notification identifying references, pointers or addresses of the cache pages storing the read data; responsive to receiving the notification, the first component performing one or more operations including directly accessing the first data from the cache pages using the references, pointers or addresses; and responsive to successfully completing the one or more operations, performing second processing including: releasing or unlocking the set of one or more cache pages storing the first data; releasing the one or more locks of the one or more data pages including the first data; and closing the first transaction.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, from a first component, a bufferless read request to read first data from one or more logical addresses of a storage object;
responsive to receiving the bufferless read request, performing first processing including:
opening a first transaction;
acquiring one or more locks of one or more data pages including the first data;
locking a set of one or more cache pages of a cache; and
storing the first data in the set of one or more cache pages;
responsive to storing the first data in the set of one or more cache pages, sending a notification to the first component, wherein the notification identifies one or more references, pointers or addresses of the one or more cache pages of the set storing the first data;
responsive to receiving the notification, the first component performing one or more operations including directly accessing the first data from the cache using the one or more references, pointers or addresses; and
responsive to successfully completing the one or more operations, performing second processing including:
releasing or unlocking the set of one or more cache pages storing the first data;
releasing the one or more locks of the one or more data pages including the first data; and
closing the first transaction.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the first component is a copier component copying a set of data changes of a source volume of a source system to a corresponding target volume of a target system, and wherein the source volume is the storage object identified in the bufferless read request.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the source volume and the target volume are included in an asynchronous replication configuration where writes or data changes made to the source volume are asynchronously replicated to the target volume.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, further comprising:
taking a plurality of replication snapshots of the source volume on the source system at a plurality of corresponding points in times; and
determining a first set of data changes between a first and a second of the plurality of replication snapshots, where the first and the second of the plurality of replication snapshots are consecutively taken replication snapshots, and wherein the one or more logical addresses of the bufferless read request include at least a portion of the first set of data changes.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the one or more operations performed by the copier component include directly accessing the first data from the cache using the one or more references, pointers or addresses for replication from the source system to a target volume of the target system.

### Claim 6 (depends on 3)

The computer-implemented method of claim 3, wherein the source volume and the target volume are both configured to have a same identity of a logical volume when exposed to a host.

### Claim 7 (depends on 6)

The computer-implemented method of claim 6, wherein the source volume is exposed to the host over one or more first paths between the host and the source system and wherein the one or more first paths are designated as active where the host issues I/O requests to the source volume configured as the logical volume over the one or more first paths.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein the target volume is exposed to the host over one or more second paths between the host and the target system and wherein the one or more second paths are designated as passive where the host is unable to issue I/O requests to the target volume configured as the logical volume over the one or more second paths.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, wherein the set of one or more cache pages storing the first data remains locked for the duration of the first transaction thereby resulting in the first data being retained in the cache for the duration of the first transaction while open.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the one or more locks taken on the one or more data pages including the first data are one or more read locks, and wherein each of the one or more read locks taken on the one or more data pages including the first data is a read lock on a corresponding one of the one or more data pages.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10, wherein each of the one or more read locks taken on a corresponding one of the one or more data pages allows additional readers to take corresponding additional read locks on the corresponding one data page but does not allow any writer to take a corresponding write lock on the corresponding one data page.

### Claim 12 (depends on 1)

The computer-implemented method of claim 1, further comprising:
dynamically determining, in accordance with one or more criteria, whether the first component performs a first read request that reads the first data using the bufferless read request or a buffered read request.

### Claim 13 (depends on 12)

The computer-implemented method of claim 12, wherein the buffered read request includes a read buffer as an input parameter, wherein the read buffer is pre-allocated by a client prior to issuing the buffered read request, and wherein processing of the buffered read request to read second content from one or more locations includes:
storing the second content in the cache;
copying the second content from the cache to the read buffer; and
returning the read buffer with the second content in response to the buffered read request.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, wherein the bufferless read request does not include the read buffer as an input parameter and omits copying requested read data from the cache into the read buffer whereby the requested read data is alternatively directly accessed from the cache.

### Claim 15 (depends on 12)

The computer-implemented method of claim 12, wherein the one or more criteria include any one or more of: a current cache utilization of the cache; an amount of free cache; a predicted cache utilization;
and one or more characteristics of a current I/O workload of a system including the cache.

### Claim 16 (depends on 12)

The computer-implemented method of claim 12, wherein the one or more criteria specify to selectively use the buffered read request rather than the bufferless read request based, at least in part, on one or more criteria including any one or more of: a current cache utilization exceeding a threshold; an amount of free cache falling below a threshold; a predicted cache utilization exceeding a threshold; a current I/O workload; and/or a particular application or component performing the first read request.

### Claim 17 (depends on 1)

The computer-implemented method of claim 1, wherein the storage object is any of: a volume, a logical device, a file, and a file system.

### Claim 18

A system comprising:
one or more processors; and
a memory comprising code stored thereon that, when executed, performs a method comprising:
receiving, from a first component, a bufferless read request to read first data from one or more logical addresses of a storage object;
responsive to receiving the bufferless read request, performing first processing including:
opening a first transaction;
acquiring one or more locks of one or more data pages including the first data;
locking a set of one or more cache pages of a cache; and
storing the first data in the set of one or more cache pages;
responsive to storing the first data in the set of one or more cache pages, sending a notification to the first component, wherein the notification identifies one or more references, pointers or addresses of the one or more cache pages of the set storing the first data;
responsive to receiving the notification, the first component performing one or more operations including directly accessing the first data from the cache using the one or more references, pointers or addresses; and
responsive to successfully completing the one or more operations, performing second processing including:
releasing or unlocking the set of one or more cache pages storing the first data;
releasing the one or more locks of the one or more data pages including the first data; and
closing the first transaction.

### Claim 19

A non-transitory computer-readable memory comprising code stored thereon that, when executed, performs a method comprising:
receiving, from a first component, a bufferless read request to read first data from one or more logical addresses of a storage object;
responsive to receiving the bufferless read request, performing first processing including:
opening a first transaction;
acquiring one or more locks of one or more data pages including the first data;
locking a set of one or more cache pages of a cache; and
storing the first data in the set of one or more cache pages;
responsive to storing the first data in the set of one or more cache pages, sending a notification to the first component, wherein the notification identifies one or more references, pointers or addresses of the one or more cache pages of the set storing the first data;
responsive to receiving the notification, the first component performing one or more operations including directly accessing the first data from the cache using the one or more references, pointers or addresses; and
responsive to successfully completing the one or more operations, performing second processing including:
releasing or unlocking the set of one or more cache pages storing the first data;
releasing the one or more locks of the one or more data pages including the first data; and
closing the first transaction.
