# US 12,223,197 B2 · Metadata-based data copying

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

- Number: US 12,223,197 B2
- Document ID: US12223197B2
- Status: Granted
- Kind: B2
- Application number: 17/870,992
- Filed: 2022-07-22
- Published: 2024-01-25
- Granted: 2025-02-11
- Earliest claimed: 2022-07-22
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Nimrod Shani; Tal Zohar; Vamsi K. Vankamamidi
- Web page: https://patentgrep.com/patent/US12223197B2

## CPC

- G06F 3/0613: {in relation to throughput}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- 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

A technique for copying data from a source range to a destination range includes identifying a chunk of the source range. The chunk includes multiple logical blocks that map, through a series of source-mapping pages, to a set of virtual pages that point to physical data of the chunk. The technique further includes copying the series of source-mapping pages to form a corresponding series of destination-mapping pages pointed to by the destination range, so that a corresponding chunk of the destination range maps, via the series of destination-mapping pages, to the same set of virtual pages mapped to by the series of source mapping pages.

## Claims

### Claim 1

A method of copying data, comprising:
receiving a request to copy a set of data from a source range to a destination range;
identifying a chunk of the source range, the chunk including multiple logical blocks that are mapped, through a series of source-mapping pages, to a set of virtual pages that point to physical data of the chunk;
copying the series of source-mapping pages to provide a corresponding series of destination-mapping pages pointed to by the destination range, the corresponding series of destination-mapping pages mapping multiple logical blocks in a corresponding chunk of the destination range to the set of virtual pages, the destination range thereby pointing to the physical data of the chunk of the source range and providing a copy thereof.

### Claim 2 (depends on 1)

The method of claim 1, wherein the source range and the destination range are both located within a logical address space of a storage system.

### Claim 3 (depends on 2)

The method of claim 2, wherein the series of source-mapping pages includes a source-leaf page that points to the set of virtual pages, the source-leaf page including pointers that map every one of the logical blocks of the chunk.

### Claim 4 (depends on 2)

The method of claim 2, wherein the method further comprises, prior to copying the series of source-mapping pages:
accessing the series of destination-mapping pages with a write-lock; and
allocating a new destination-mapping page for each of the series of destination-mapping pages.

### Claim 5 (depends on 4)

The method of claim 4, wherein at least one of the new destination-mapping pages does not replace any previously allocated destination-mapping page.

### Claim 6 (depends on 4)

The method of claim 4, wherein at least one of the new destination-mapping pages replaces an old destination mapping page that already exists.

### Claim 7 (depends on 6)

The method of claim 6, wherein a parent-child relationship exists between the old destination-mapping page and one of the series of source-mapping pages, and wherein allocating the new destination-mapping page causes the new destination mapping page to have no parent-child relationship with any of the series of source-mapping pages.

### Claim 8 (depends on 4)

The method of claim 4, further comprising accessing the series of source-mapping pages for reading using a try-lock, the try-lock configured to return a failure result if the try-lock cannot be obtained.

### Claim 9 (depends on 8)

The method of claim 8, wherein the method further comprises, responsive to the try-lock returning the failure result:
committing, in a transaction log, a transaction that involves at least one of the series of source-mapping pages; and
after committing the transaction, accessing the series of source-mapping pages using a read-lock.

### Claim 10 (depends on 9)

The method of claim 9, wherein copying the series of source-mapping pages to the corresponding series of destination-mapping pages includes copying mapping pointers from the series of source-mapping pages to the new destination-mapping pages.

### Claim 11

A computerized apparatus, comprising control circuitry that includes a set of processors coupled to memory, the control circuitry constructed and arranged to:
receive a request to copy a set of data from a source range to a destination range;
identify a chunk of the source range, the chunk including multiple logical blocks that are mapped, through a series of source-mapping pages, to a set of virtual pages that point to physical data of the chunk;
copy the series of source-mapping pages to provide a corresponding series of destination-mapping pages pointed to by the destination range, the corresponding series of destination-mapping pages mapping multiple logical blocks in a corresponding chunk of the destination range to the set of virtual pages, the destination range thereby pointing to the physical data of the chunk of the source range and providing a copy thereof.

### Claim 12

A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a computerized apparatus, cause the computerized apparatus to perform a method of copying data, the method comprising:
receiving a request to copy a set of data from a source range to a destination range;
identifying a chunk of the source range, the chunk including multiple logical blocks that are mapped, through a series of source-mapping pages, to a set of virtual pages that point to physical data of the chunk;
copying the series of source-mapping pages to provide a corresponding series of destination-mapping pages pointed to by the destination range, the corresponding series of destination-mapping pages mapping multiple logical blocks in a corresponding chunk of the destination range to the set of virtual pages, the destination range thereby pointing to the physical data of the chunk of the source range and providing a copy thereof.

### Claim 13 (depends on 12)

The computer program product of claim 12, wherein the source range and the destination range are both located within a logical address space of a storage system.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the series of source-mapping pages includes a source-leaf page that points to the set of virtual pages, the source-leaf page including pointers that map every one of the logical blocks of the chunk.

### Claim 15 (depends on 13)

The computer program product of claim 13, wherein the method further comprises, prior to copying the series of source-mapping pages:
accessing the series of destination-mapping pages with a write-lock; and
allocating a new destination-mapping page for each of the series of destination-mapping pages.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein at least one of the new destination-mapping pages does not replace any previously allocated destination-mapping page.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein at least one of the new destination-mapping pages replaces an old destination mapping page that already exists.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein a parent-child relationship exists between the old destination-mapping page and one of the series of source-mapping pages, and wherein allocating the new destination-mapping page causes the new destination mapping page to have no parent-child relationship with any of the series of source-mapping pages.

### Claim 19 (depends on 15)

The computer program product of claim 15, further comprising accessing the series of source-mapping pages for reading using a try-lock, the try-lock configured to return a failure result if the try-lock cannot be obtained.

### Claim 20 (depends on 19)

The computer program product of claim 19, wherein the method further comprises, responsive to the try-lock returning the failure result:
committing, in a transaction log, a transaction that involves at least one of the series of source-mapping pages; and
after committing the transaction, accessing the series of source-mapping pages using a read-lock.

### Claim 21 (depends on 1)

The method of claim 1, wherein copying the series of source-mapping pages to the corresponding series of destination-mapping pages includes adjusting pointers of at least one of the destination-mapping pages for offsets so that relative pointing between the series of destination-mapping pages is analogous to relative pointing between the series of source-mapping pages.
