# US 10,762,059 B2 · Creating and patching binary software homes using content addressable storage

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

- Number: US 10,762,059 B2
- Document ID: US10762059B2
- Status: Granted
- Kind: B2
- Application number: 16/040,398
- Filed: 2018-07-19
- Published: 2019-08-01
- Granted: 2020-09-01
- Earliest claimed: 2018-01-31
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: David Lee Felts; Vy Nguyen; Steven To
- Web page: https://patentgrep.com/patent/US10762059B2

## CPC

- G06F 16/183: {Provision of network file services by network file servers, e.g. by using NFS, CIFS (network file access protocols H04L67/1097)}
- G06F 16/137: {Hash-based (content-based indexing of textual data G06F16/31)}
- G06F 16/164: {File meta data generation}
- G06F 16/86: {Mapping to a database}
- G06F 16/9017: {using directory or table look-up (use of a directory or look-up table in file systems G06F16/13)}
- G06F 16/90339: {by using parallel associative memories or content-addressable memories}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are disclosed herein for creating and patching software homes using content addressable storage. One or more embodiments comprises storing content for a file that is used to run a particular software deployment. The file is associated with a particular directory that includes a link to a first filename. The first filename is generated as a function of the content for the file, such as by applying a hash function. Responsive to receiving updated content a second filename is generated as a function of the updated content. The second filename is different than the first filename. The link included in the particular directory is modified to point to the second filename. After modifying the link included in the particular directory, the updated content for the file is used to run the particular software deployment.

## Claims

### Claim 1

A method comprising:
storing content for a file that is used to run a particular software deployment, wherein the file is associated with a particular directory that includes a link to a first filename generated as a function of the content for the file;
receiving updated content for the file;
responsive to receiving the updated content for the file, generating a second filename as a function of the updated content, wherein the second filename is different than the first filename;
modifying the link included in the particular directory to point to the second filename, wherein after modifying the link included in the particular directory to point to the second filename, the updated content for the file is used to run the particular software deployment;
generating a patch memento that stores a set of one or more links including the link to the first filename; and
returning the particular software deployment to a previous state using the patch memento, wherein returning the particular software deployment to the previous state using the patch memento comprises modifying the link in the particular directory to point to the first filename.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first filename is mapped to a first location in a content addressable storage repository and wherein the second filename is mapped to a second location in the content addressable storage repository.

### Claim 3 (depends on 2)

The method of claim 2, wherein the updated contents are stored at the second location in the content addressable storage repository without modifying the contents of the file at the first location in the content addressable storage repository and while the particular software deployment continues to run from the content for the file.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first filename is generated by applying a cryptographic hash function to the content for the file; wherein the second filename is generated by applying the cryptographic hash function to the updated contents for the file.

### Claim 5 (depends on 1)

The method of claim 1, wherein the link maps a filename of a namespace of a software home including the particular directory to the first filename before the link is modified and to the second filename after the link is modified.

### Claim 6 (depends on 1)

The method of claim 1, wherein the updated content for the file includes an updated software binary.

### Claim 7 (depends on 1)

The method of claim 1, wherein the particular directory is included in a first software home of a plurality of software homes from which different software deployments are run; wherein the plurality of software homes includes a second software home; wherein the second software home is associated with a second file that shares identical contents with the first file before receiving the updated content, wherein the second software home includes a second directory; wherein the second directory includes a link for the second file that points to the first filename.

### Claim 8 (depends on 1)

The method of claim 1, wherein the particular directory is a first directory of a plurality of directories included in a particular software home, the method further comprising storing a plurality of hash values for a plurality of directories; wherein the hash value for the first directory is determined as a function of the updated contents for the file and contents for at least one other file associated with the particular directory.

### Claim 9 (depends on 8)

The method of claim 8, further comprising identifying differences between the particular software home and a second software home based on a comparison of at least one hash value of the plurality of hash values with a second set of one or more hash values associated with the second software home.

### Claim 10

One or more non-transitory computer-readable media storing instructions, which, when executed by one or more hardware processors, cause operations comprising:
storing content for a file that is used to run a particular software deployment, wherein the file is associated with a particular directory that includes a link to a first filename generated as a function of the content for the file;
receiving updated content for the file;
responsive to receiving the updated content for the file, generating a second filename as a function of the updated content, wherein the second filename is different than the first filename;
modifying the link included in the particular directory to point to the second filename, wherein after modifying the link included in the particular directory to point to the second filename, the updated content for the file is used to run the particular software deployment;
generating a patch memento that stores a set of one or more links including the link to the first filename; and
returning the particular software deployment to a previous state using the patch memento, wherein returning the particular software deployment to the previous state using the patch memento comprises modifying the link in the particular directory to point to the first filename.

### Claim 11 (depends on 10)

The one or more non-transitory computer-readable media of claim 10, wherein the first filename is mapped to a first location in a content addressable storage repository and wherein the second filename is mapped to a second location in the content addressable storage repository.

### Claim 12 (depends on 11)

The one or more non-transitory computer-readable media of claim 11, wherein the updated contents are stored at the second location in the content addressable storage repository without modifying the contents of the file at the first location in the content addressable storage repository and while the particular software deployment continues to run from the content for the file.

### Claim 13 (depends on 10)

The one or more non-transitory computer-readable media of claim 10, wherein the first filename is generated by applying a cryptographic hash function to the content for the file; wherein the second filename is generated by applying the cryptographic hash function to the updated contents for the file.

### Claim 14 (depends on 10)

The one or more non-transitory computer-readable media of claim 10, wherein the link maps a filename of a namespace of a software home including the particular directory to the first filename before the link is modified and to the second filename after the link is modified.

### Claim 15 (depends on 10)

The one or more non-transitory computer-readable media of claim 10, wherein the updated content for the file includes an updated software binary.

### Claim 16 (depends on 10)

The one or more non-transitory computer-readable media of claim 10, wherein the particular directory is included in a first software home of a plurality of software homes from which different software deployments are run; wherein the plurality of software homes includes a second software home; wherein the second software home is associated with a second file that shares identical contents with the first file before receiving the updated content, wherein the second software home includes a second directory; wherein the second directory includes a link for the second file that points to the first filename.

### Claim 17 (depends on 10)

The one or more non-transitory computer-readable media of claim 10, wherein the particular directory is a first directory of a plurality of directories included in a particular software home, the operations further comprising storing a plurality of hash values for a plurality of directories; wherein the hash value for the first directory is determined as a function of the updated contents for the file and contents for at least one other file associated with the particular directory.

### Claim 18 (depends on 17)

The one or more non-transitory computer-readable media of claim 17, further comprising identifying differences between the particular software home and a second software home based on a comparison of at least one hash value of the plurality of hash values with a second set of one or more hash values associated with the second software home.

### Claim 19

A system comprising:
one or more hardware processors; and
one or more non-transitory computer-readable media storing instructions, which, when executed by the one or more hardware processors, cause:
storing content for a file that is used to run a particular software deployment, wherein the file is associated with a particular directory that includes a link to a first filename generated as a function of the content for the file;
receiving updated content for the file;
responsive to receiving the updated content for the file, generating a second filename as a function of the updated content, wherein the second filename is different than the first filename;
modifying the link included in the particular directory to point to the second filename, wherein after modifying the link included in the particular directory to point to the second filename, the updated content for the file is used to run the particular software deployment;
generating a patch memento that stores a set of one or more links including the link to the first filename; and
returning the particular software deployment to a previous state using the patch memento, wherein returning the particular software deployment to the previous state using the patch memento comprises modifying the link in the particular directory to point to the first filename.
