# US 12,111,771 B2 · Aggregating block mapping metadata to improve linked clone read performance

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

- Number: US 12,111,771 B2
- Document ID: US12111771B2
- Status: Granted
- Kind: B2
- Application number: 17/384,298
- Filed: 2021-07-23
- Published: 2023-01-26
- Granted: 2024-10-08
- Earliest claimed: 2021-07-23
- Assignees: VMware, Inc.
- Applicants: VMware LLC
- Inventors: Enning Xiang; Wenguang Wang
- Web page: https://patentgrep.com/patent/US12111771B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 12/10: Address translation
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/461: {Saving or restoring of program or task context}
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1484: {involving virtual machines}
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Linked clone read performance (e.g., retrieving data) is improved at least by minimizing the number of input/output (I/O) operations. For a child clone, a local logical extent and an inherited logical extent are generated. The local logical extent comprises a logical block address (LBA) for data in a data region of the child clone and a physical sector address (PSA) corresponding to the LBA for the data in the data region of the child clone. The inherited logical extent spans logical extents that are accessible to the child clone. The inherited logical extent comprises an LBA for data in a data region of an ancestor of the child clone and a corresponding identifier (ID) of the ancestor. Data for an LBA in a read request may be rapidly found in the child clone (local logical extent) or an ancestor (inherited logical extent).

## Claims

### Claim 1

A method comprising:
generating a child clone;
generating a logical map for the child clone, the logical map for the child clone comprising:
a local logical extent comprising a logical block address (LBA) for data in a data region of the child clone and a physical sector address (PSA) corresponding to the LBA for the data in the data region of the child clone, and
an inherited logical extent spanning logical extents that are accessible to the child clone, the inherited logical extent inherited from a first ancestor of the child clone and comprising an LBA for data in a data region of the first ancestor and an ancestor identifier (ID) of the first ancestor;
receiving a read request having a read request LBA;
upon at least determining that the read request LBA corresponds to the LBA in the local logical extent, returning the data from the data region of the child clone; and
upon at least determining that the read request LBA does not correspond to the LBA in the local logical extent, determining that the read request LBA corresponds to the LBA in the inherited logical extent, identifying the first ancestor directly using the ancestor ID that is mapped to the LBA in the inherited logical extent, and returning the data from the data region of the identified first ancestor.

### Claim 2 (depends on 1)

The method of claim 1, wherein the read request LBA corresponds to the LBA in the inherited logical extent, and further comprising:
reading a logical map of the first ancestor; and
identifying a PSA corresponding to the LBA for the data in the data region of the first ancestor.

### Claim 3 (depends on 1)

The method of claim 1, wherein the inherited logical extent further comprises an LBA for data in a data region of a second ancestor of the child clone and a corresponding ID of the second ancestor, and
wherein the second ancestor is an ancestor of the first ancestor.

### Claim 4 (depends on 1)

The method of claim 1, wherein the local logical extent further comprises a snapshot ID of the child clone.

### Claim 5 (depends on 1)

The method of claim 1, wherein the inherited logical extent includes a history of all ancestors of the child clone.

### Claim 6 (depends on 1)

The method of claim 1, wherein the ancestor ID of the first ancestor comprises a universally unique identifier (UUID) of the first ancestor.

### Claim 7 (depends on 1)

The method of claim 1, further comprising after identifying the first ancestor, searching directly in a local logical extent of the identified first ancestor, the child clone being forked from the identified first ancestor and inheriting the local logical extent of the identified first ancestor as the inherited logical extent in the child clone.

### Claim 8

A computer system comprising:
a processor; and
a non-transitory computer readable medium having stored thereon program code executable by the processor, the program code causing the processor to:
generate a child clone;
generate a logical map for the child clone, the logical map for the child clone comprising:
a local logical extent comprising a logical block address (LBA) for data in a data region of the child clone and a physical sector address (PSA) corresponding to the LBA for the data in the data region of the child clone, and
an inherited logical extent spanning logical extents that are accessible to the child clone, the inherited logical extent inherited from a first ancestor of the child clone and comprising an LBA for data in a data region of the first ancestor and an ancestor identifier (ID) of the first ancestor;
receive a read request having a read request LBA;
upon at least determining that r the read request LBA corresponds to the LBA in the local logical extent, return the data from the data region of the child clone; and
upon at least determining that the read request LBA does not correspond to the LBA in the local logical extent, determine that the read request LBA corresponds to the LBA in the inherited logical extent, identify the first ancestor directly using the ancestor ID that is mapped to the LBA in the inherited logical extent, and return the data from the data region of the identified first ancestor.

### Claim 9 (depends on 8)

The computer system of claim 8, wherein the read request LBA corresponds to the LBA in the inherited logical extent, and wherein the program code is further operative to:
read a logical map of the first ancestor; and
identify a PSA corresponding to the LBA for the data in the data region of the first ancestor.

### Claim 10 (depends on 8)

The computer system of claim 8, wherein the inherited logical extent further comprises an LBA for data in a data region of a second ancestor of the child clone and a corresponding ID of the second ancestor, and
wherein the second ancestor is an ancestor of the first ancestor.

### Claim 11 (depends on 8)

The computer system of claim 8, wherein the local logical extent further comprises a snapshot ID of the child clone.

### Claim 12 (depends on 8)

The computer system of claim 8, wherein the inherited logical extent includes a history of all ancestors of the child clone.

### Claim 13 (depends on 8)

The computer system of claim 8, wherein the ancestor ID of the first ancestor comprises a universally unique identifier (UUID) of the first ancestor.

### Claim 14 (depends on 8)

The computer system of claim 8, wherein the logical map for the child clone comprises a B+ tree.

### Claim 15

A non-transitory computer storage medium having stored thereon program code executable by a processor, the program code embodying a method comprising:
generating a child clone;
generating a logical map for the child clone, the logical map for the child clone comprising:
a local logical extent comprising a logical block address (LBA) for data in a data region of the child clone and a physical sector address (PSA) corresponding to the LBA for the data in the data region of the child clone, and
an inherited logical extent spanning logical extents that are accessible to the child clone, the inherited logical extent inherited from a first ancestor of the child clone and comprising an LBA for data in a data region of the first ancestor and an ancestor identifier (ID) of the first ancestor;
receiving a read request having a read request LBA;
upon at least determining that the read request LBA corresponds to the LBA in the local logical extent, returning the data from the data region of the child clone; and
upon at least determining that the read request LBA does not correspond to the LBA in the local logical extent, determining that the read request LBA corresponds to the LBA in the inherited logical extent, identifying the first ancestor directly using the ancestor ID that is mapped to the LBA in the inherited logical extent, and returning the data from the data region of the identified first ancestor.

### Claim 16 (depends on 15)

The computer storage medium of claim 15, wherein the read request LBA corresponds to the LBA in the inherited logical extent, and wherein the program code further comprises:
reading a logical map of the first ancestor; and
identifying a PSA corresponding to the LBA for the data in the data region of the first ancestor.

### Claim 17 (depends on 15)

The computer storage medium of claim 15, wherein the inherited logical extent further comprises an LBA for data in a data region of a second ancestor of the child clone and a corresponding ID of the second ancestor, and
wherein the second ancestor is an ancestor of the first ancestor.

### Claim 18 (depends on 15)

The computer storage medium of claim 15, wherein the local logical extent further comprises a snapshot ID of the child clone.

### Claim 19 (depends on 15)

The computer storage medium of claim 15, wherein the inherited logical extent includes a history of all ancestors of the child clone.

### Claim 20 (depends on 15)

The computer storage medium of claim 15, wherein the ancestor ID of the first ancestor comprises a universally unique identifier (UUID) of the first ancestor.
