# US 12,112,039 B2 · Combining xcopy's, unmaps, and writes in a single flush

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

- Number: US 12,112,039 B2
- Document ID: US12112039B2
- Status: Granted
- Kind: B2
- Application number: 18/156,683
- Filed: 2023-01-19
- Published: 2024-07-25
- Granted: 2024-10-08
- Earliest claimed: 2023-01-19
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Vamsi K. Vankamamidi; Socheavy Heng; Nimrod Shani
- Web page: https://patentgrep.com/patent/US12112039B2

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0683: {Plurality of storage devices}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 2212/1024: Latency reduction
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/154: Networked environment
- G06F 2212/313: In storage device
- G06F 2212/466: Metadata, control data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A technique for managing a log in a storage system includes adding descriptors to the log, the descriptors indicating changes in user data that affects metadata, and creating a working set of descriptors that includes both per-block descriptors for specifying per-block changes and per-extent descriptors for specifying per-extent changes, where an extent includes a range of contiguous blocks. The technique further includes flushing the working set in a single flush cycle, including flushing the per-block descriptors together with the per-extent descriptors.

## Claims

### Claim 1

A method of managing a log, comprising:
adding log descriptors to the log, the log descriptors including a first plurality of descriptors that specify changes in respective, individual blocks and a second plurality of descriptors that specify changes in respective extents, each extent including multiple blocks having contiguous LBAs (logical block addresses);
creating a working set of descriptors that includes both a first set of descriptors selected from the first plurality of descriptors and a second set of descriptors selected from the second plurality of descriptors; and
flushing, in a single flush cycle, the working set to persistent structures to implement the changes specified by the first set of descriptors and the second set of descriptors.

### Claim 2 (depends on 1)

The method of claim 1, wherein the second set of descriptors includes an x-copy descriptor that indicates an x-copy operation from a source range to a destination range.

### Claim 3 (depends on 2)

The method of claim 2,
wherein the descriptors in the log are time ordered using sequence indicators,
wherein the log initially includes at least one descriptor that both (i) has an earlier sequence indicator than the x-copy descriptor and (ii) specifies a change in one or more LBAs that fall within the source range of the x-copy operation, and
wherein the method further comprises delaying the flushing of the x-copy descriptor until there are no other descriptors in the log that both (i) have earlier sequence indicators than the x-copy descriptor and (ii) specify changes in one or more LBAs that fall within the source range of the x-copy operation.

### Claim 4 (depends on 3)

The method of claim 3, further comprising delaying, until the x-copy operation has completed, flushing of at least one descriptor that both (i) has a later sequence indicator than the x-copy descriptor and (ii) specifies changes in one or more LBAs that fall within the source range of the x-copy operation.

### Claim 5 (depends on 4)

The method of claim 4, further comprising creating a ghost descriptor in the log, the ghost descriptor indicating the x-copy source range and preventing the x-copy descriptor from being flushed until after a referenced previous descriptor affecting the x-copy source range has been flushed.

### Claim 6 (depends on 5)

The method of claim 5, wherein the log includes an in-memory instance and a persistent instance, wherein creating the ghost descriptor include storing the ghost descriptor in the in-memory instance but not in the persistent instance, and wherein the method further comprises deleting the ghost descriptor from the in-memory instance based on the x-copy operation being completed.

### Claim 7 (depends on 3)

The method of claim 3, wherein at least one LBA within the destination range of the x-copy operation is part of a source range indicated by another descriptor in the log that has an earlier sequence indicator than the x-copy descriptor, and wherein the method further comprises delaying the flushing of the x-copy descriptor until after the other descriptor has been flushed.

### Claim 8 (depends on 7)

The method of claim 7, wherein the other descriptor in the log is a descriptor for a previous x-copy operation.

### Claim 9 (depends on 2)

The method of claim 2, further comprising:
detecting that the x-copy operation has completed; and
inserting an x-copy-done descriptor into the log, the x-copy-done descriptor indicating that the x-copy operation has completed.

### Claim 10 (depends on 9)

The method of claim 9, further comprising persisting the x-copy-done descriptor in a persistent instance of the log, the persisted x-copy-done descriptor preventing the x-copy operation from being repeated following a reboot.

### Claim 11 (depends on 2)

The method of claim 2, wherein the first set of descriptors includes a block-write descriptor that specifies a write of a block to a target LBA, and wherein the target LBA falls within the destination range indicated by the x-copy descriptor.

### Claim 12 (depends on 11)

The method of claim 11, wherein descriptors in the log are time ordered using sequence indicators, wherein the x-copy descriptor has an earlier sequence indicator than the block-write descriptor, and wherein the method further comprises invalidating the target LBA within the destination range indicated by the x-copy descriptor, such that a resulting x-copy operation does not update the target LBA.

### Claim 13 (depends on 1)

The method of claim 1, wherein the second set of descriptors includes an unmap descriptor that specifies an unmap operation of an indicated LBA range, wherein the first set of descriptors includes a second block-write descriptor that specifies a write of a second block to a second target LBA, and wherein the second target LBA falls within the LBA range indicated by the unmap descriptor.

### Claim 14 (depends on 13)

The method of claim 13, wherein descriptors in the log are time ordered using sequence indicators, wherein the unmap descriptor has an earlier sequence indicator than the second block-write descriptor, and wherein the method further comprises invalidating the second target LBA within the range indicated by the unmap descriptor, such that a resulting unmap operation does not update the second target LBA.

### Claim 15 (depends on 1)

The method of claim 1, wherein the second set of descriptors includes both (i) an unmap descriptor that indicates an unmap operation of an indicated LBA range and (ii) an x-copy descriptor that indicates an x-copy operation from a source range to a destination range.

### Claim 16

A computerized apparatus, comprising control circuitry that includes a set of processors coupled to memory, the control circuitry constructed and arranged to:
add log descriptors to a log, the log descriptors including a first plurality of descriptors that specify changes in respective, individual blocks and a second plurality of descriptors that specify changes in respective extents, each extent including multiple blocks having contiguous LBAs (logical block addresses);
create a working set of descriptors that includes both a first set of descriptors selected from the first plurality of descriptors and a second set of descriptors selected from the second plurality of descriptors; and
flush, in a single flush cycle, the working set to persistent structures to implement the changes specified by the first set of descriptors and the second set of descriptors.

### Claim 17

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 managing a log, the method comprising:
adding log descriptors to the log, the log descriptors including a first plurality of descriptors that specify changes in respective, individual blocks and a second plurality of descriptors that specify changes in respective extents, each extent including multiple blocks having contiguous LBAs (logical block addresses);
creating a working set of descriptors that includes both a first set of descriptors selected from the first plurality of descriptors and a second set of descriptors selected from the second plurality of descriptors; and
flushing, in a single flush cycle, the working set to persistent structures to implement the changes specified by the first set of descriptors and the second set of descriptors.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the second set of descriptors includes an x-copy descriptor that indicates an x-copy operation from a source range to a destination range.

### Claim 19 (depends on 17)

The computer program product of claim 17, wherein the second set of descriptors includes an unmap descriptor that specifies an unmap operation of an indicated LBA range, wherein the first set of descriptors includes a second block-write descriptor that specifies a write of a second block to a second target LBA, and wherein the second target LBA falls within the LBA range indicated by the unmap descriptor.

### Claim 20 (depends on 17)

The computer program product of claim 17, wherein the second set of descriptors includes both (i) an unmap descriptor that indicates an unmap operation of an indicated LBA range and (ii) an x-copy descriptor that indicates an x-copy operation from a source range to a destination range.
