# US 12,591,493 B2 · Rebuilding a destination file system as part of a resync operation

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

- Number: US 12,591,493 B2
- Document ID: US12591493B2
- Status: Granted
- Kind: B2
- Application number: 18/636,831
- Filed: 2024-04-16
- Published: 2025-10-16
- Granted: 2026-03-31
- Earliest claimed: 2024-04-16
- Assignees: NetApp, Inc.
- Applicants: NetApp, Inc.
- Inventors: Abhishek Naidu; Rachita Kothiyal; Atul Ramesh Pandit; Anil Kumar Ponnapur; Tijin George; Boopathy Krishnamoorthy
- Web page: https://patentgrep.com/patent/US12591493B2

## CPC

- G06F 11/2082: {Data synchronisation}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/1435: {using file system or storage system metadata}
- G06F 11/1464: {for networked environments}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 11/2056: {by mirroring}
- G06F 11/2069: {Management of state, configuration or failover}
- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 16/184: {implemented as replicated file system}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are provided for rebuilding a destination file system as part of a resync operation. A file system of a first node may be replicated to a second node as a destination file system. The file system may include clone files that were created as clones of parent files. The clone files may have been created in a storage efficient manner where a clone file refers to data of a parent file, instead physically storing duplicate instances of the parent data of the parent file. The techniques provided herein are capable of replicating the clone files to the second node while preserve the storage efficiency of the clone files during a resync operation that rebuilds the destination file system after recovering from a failure of the second node.

## Claims

### Claim 1

A method comprising:
receiving, by a destination storage node as part of a resync operation performed by a computing system, changed blocks from a source storage node in response to the destination storage node recovering from a failure;
receiving, by the destination storage node from the source storage node during the resync operation, inode information of clone files and parent information of parent files;
logging the inode information and the parent information into a destination metafile as logged information; and
replaying the logged information from the destination metafile to create reconstructed clone files as part of reconstructing a destination file system at the destination storage node, wherein the replaying includes creating a reconstructed file of a file using the changed blocks received from the source storage node in response to an evaluation of the logged information indicating that the file is not a logged clone file.

### Claim 2 (depends on 1)

The method of claim 1, comprising:
reconstructing a clone file as a reconstructed clone file and a parent file as a reconstructed parent file at the destination storage node; and
utilizing the parent file information to merge a first internal representation of the reconstructed clone file with a second internal representation of the reconstructed parent file.

### Claim 3 (depends on 1)

The method of claim 1, comprising:
creating, at the destination storage node, a placeholder clone file comprised of a set of unshared blocks storing data of a clone file that are not shared with a parent file; and
utilizing the parent file information to merge a first buftree of the placeholder clone file with a second buftree of a reconstructed parent file of the parent file to create a reconstructed clone file comprised of the data from the set of unshared blocks and data from a set of shared blocks shared between the clone file and the parent file.

### Claim 4 (depends on 1)

The method of claim 1, comprising:
during a difference operation, evaluating a clone file and a parent file to identify a set of shared blocks storing data shared by the clone file and the parent file and a set of unshared blocks storing data of the clone file that is not shared with the parent file;
creating, at the destination storage node, a placeholder clone file into which the set of unshared blocks are stored;
reconstructing the parent file as a reconstructed parent file at the destination storage node; and
utilizing the parent file information to merge a first internal representation of the placeholder clone file with a second internal representation of the reconstructed parent file to transform the placeholder clone file into the reconstructed clone file comprised of the data from the set of shared blocks and the data from the set of unshared blocks.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
rebuilding a destination file system using the changed blocks received from the source storage node, wherein the destination file system is rebuilt to mirror a source file system maintained by the source storage node.

### Claim 6 (depends on 1)

The method of claim 1, comprising:
reconstructing a clone file as a reconstructed clone file and a parent file as a reconstructed parent file at the destination storage node.

### Claim 7 (depends on 1)

The method of claim 1, comprising:
creating a reconstructed clone file utilizing a set of shared blocks received from the source storage node.

### Claim 8

A computing device, comprising:
a memory comprising machine executable code; and
a processor coupled to the memory, the processor configured to execute the machine executable code to cause the machine to perform operations comprising:
receiving, by a destination storage node as part of a resync operation, changed blocks from a source storage node in response to the destination storage node recovering from a failure;
receiving, by the destination storage node from the source storage node during the resync operation, inode information of clone files and parent information of parent files;
logging the inode information and the parent information into a destination metafile as logged information; and
replaying the logged information from the destination metafile to create reconstructed clone files as part of reconstructing a destination file system at the destination storage node, wherein the replaying includes creating a reconstructed clone file utilizing a set of shared blocks received from the source storage node.

### Claim 9 (depends on 8)

The computing device of claim 8, wherein the operations comprise:
reconstructing a clone file as the reconstructed clone file and a parent file as a reconstructed parent file at the destination storage node; and
utilizing the parent file information to merge a first internal representation of the reconstructed clone file with a second internal representation of the reconstructed parent file.

### Claim 10 (depends on 8)

The computing device of claim 8, wherein the operations comprise:
creating, at the destination storage node, a placeholder clone file comprised of a set of unshared blocks storing data of a clone file that are not shared with a parent file; and
utilizing the parent file information to merge a first buftree of the placeholder clone file with a second buftree of a reconstructed parent file of the parent file to create the reconstructed clone file comprised of the data from the set of unshared blocks and data from a set of shared blocks shared between the clone file and the parent file.

### Claim 11 (depends on 8)

The computing device of claim 8, wherein the operations comprise:
during a difference operation, evaluating a clone file and a parent file to identify a set of shared blocks storing data shared by the clone file and the parent file and a set of unshared blocks storing data of the clone file that is not shared with the parent file;
creating, at the destination storage node, a placeholder clone file into which the set of unshared blocks are stored;
reconstructing the parent file as a reconstructed parent file at the destination storage node; and
utilizing the parent file information to merge a first internal representation of the placeholder clone file with a second internal representation of the reconstructed parent file to transform the placeholder clone file into the reconstructed clone file comprised of the data from the set of shared blocks and the data from the set of unshared blocks.

### Claim 12 (depends on 8)

The computing device of claim 8, wherein the operations comprise:
rebuilding a destination file system using the changed blocks received from the source storage node, wherein the destination file system is rebuilt to mirror a source file system maintained by the source storage node.

### Claim 13 (depends on 8)

The computing device of claim 8, wherein the operations comprise:
evaluating the logged information to determine that a file is not a clone file; and
creating a reconstructed file using the changed blocks received from the source storage node.

### Claim 14 (depends on 8)

The computing device of claim 8, wherein the operations comprise:
reconstructing a clone file as the reconstructed clone file and a parent file as a reconstructed parent file at the destination storage node.

### Claim 15

A non-transitory machine readable medium comprising instructions for performing a method, which when executed by a machine, causes the machine to perform operations comprising:
receiving, by a destination storage node as part of a resync operation, changed blocks from a source storage node in response to the destination storage node recovering from a failure;
receiving, by the destination storage node from the source storage node during the resync operation, inode information of clone files and parent information of parent files;
logging the inode information and the parent information into a destination metafile as logged information; and
replaying the logged information from the destination metafile to create reconstructed clone files as part of reconstructing a destination file system at the destination storage node, wherein the replaying comprises:
reconstructing a clone file as a reconstructed clone file and a parent file as a reconstructed parent file at the destination storage node; and
utilizing the parent file information to merge a first internal representation of the reconstructed clone file with a second internal representation of the reconstructed parent file.

### Claim 16 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the operations comprise:
creating a reconstructed file using the changed blocks received from the source storage node.

### Claim 17 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the operations comprise:
creating, at the destination storage node, a placeholder clone file comprised of a set of unshared blocks storing data of a clone file that are not shared with a parent file; and
utilizing the parent file information to merge a first buftree of the placeholder clone file with a second buftree of the reconstructed parent file of the parent file to create the reconstructed clone file comprised of the data from the set of unshared blocks and data from a set of shared blocks shared between the clone file and the parent file.

### Claim 18 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the operations comprise:
during a difference operation, evaluating a clone file and a parent file to identify a set of shared blocks storing data shared by the clone file and the parent file and a set of unshared blocks storing data of the clone file that is not shared with the parent file;
creating, at the destination storage node, a placeholder clone file into which the set of unshared blocks are stored; and
utilizing the parent file information to merge the first internal representation of the placeholder clone file with the second internal representation of the reconstructed parent file to transform the placeholder clone file into the reconstructed clone file comprised of the data from the set of shared blocks and the data from the set of unshared blocks.

### Claim 19 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the operations comprise:
rebuilding a destination file system using the changed blocks received from the source storage node, wherein the destination file system is rebuilt to mirror a source file system maintained by the source storage node.

### Claim 20 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the operations comprise:
evaluating the logged information to determine that a file is not a clone file; and
creating a reconstructed file using the changed blocks received from the source storage node.
