# US 2018/0025022 A1 · Delayed allocation for data object creation

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

- Number: US 2018/0025022 A1
- Document ID: US20180025022A1
- Status: Published application
- Kind: A1
- Application number: 15/433,051
- Filed: 2017-02-15
- Published: 2018-01-25
- Earliest claimed: 2016-07-22
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Henri Van Riel
- Web page: https://patentgrep.com/patent/US20180025022A1

## CPC

- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 3/0613: {in relation to throughput}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0683: {Plurality of storage devices}
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 16/16: File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F 16/172: Caching, prefetching or hoarding of files
- G06F 16/185: Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof (details of archiving G06F16/11)
- G06F 2212/1024: Latency reduction
- G06F 2212/222: Non-volatile memory
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for data storage management technology that optimizes the creation and storage of data objects. An example method may involve: receiving a request to create a data object; storing a first portion of the data object in a first data storage; determining a location in a second data storage in view of a predicted size of the data object and an access unit size of the second data storage; copying, by a processing device, the first portion of the data object from the first data storage to the location in the second data storage; and in response to receiving a second portion of the data object, directly storing the second portion in the second data storage.

## Claims

### Claim 1

A method comprising:
receiving a request to create a data object;
storing a first portion of the data object in a first data storage;
determining a location in a second data storage in view of a predicted size of the data object and an access unit size of the second data storage;
copying, by a processing device, the first portion of the data object from the first data storage to the location in the second data storage; and
in response to receiving a second portion of the data object, directly storing the second portion in the second data storage.

### Claim 2 (depends on 1)

The method of claim 1, wherein the second data storage supports a plurality of access unit sizes to access a physical storage, wherein the plurality of access unit sizes comprise different block sizes.

### Claim 3 (depends on 2)

The method of claim 2, wherein the second data storage comprises multiple regions and each of the multiple regions uses one of the plurality of access unit sizes to access the physical storage.

### Claim 4 (depends on 2)

The method of claim 2, wherein determining the location in the second data storage comprises:
comparing one or more of the plurality of block sizes with the predicted size of the data object;
selecting one of the plurality of block sizes in view of the comparing; and
identifying the location within the second storage that supports the selected block size.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the location comprises searching for one or more locations in the second data storage that reduce a storage fragmentation of the data object.

### Claim 6 (depends on 1)

The method of claim 1, wherein the second data storage comprises direct access non-volatile memory that enables a user space process running on an operating system to bypass a kernel of the operating system and execute a load instruction for the direct access non-volatile memory.

### Claim 7 (depends on 1)

The method of claim 1, wherein the predicted size of the data object is determined in view of the first portion of the data object before receiving the second portion of the data object.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first data storage comprises a page cache, and wherein copying the first portion of the data object comprises performing a page migration procedure.

### Claim 9 (depends on 1)

The method of claim 1, wherein the first data storage comprises volatile storage comprising main memory and the second data storage comprises non-volatile storage comprising non-volatile memory.

### Claim 10 (depends on 9)

The method of claim 9, further comprising migrating the first portion of the data object from a buffer in the first data storage to the second data storage, wherein the migrating comprises:
copying the first portion of the data object in the volatile storage to the location in the non-volatile storage;
removing a reference within the volatile storage that points to a location in the buffer; and
removing the first portion of the data object from the volatile storage.

### Claim 11 (depends on 10)

The method of claim 10, wherein removing the reference that points to a location in the buffer comprises updating the reference within the volatile storage to point to the determined location in the non-volatile storage.

### Claim 12 (depends on 1)

The method of claim 1, further comprising allocating storage space for the data object at the location in the second data storage after determining the predicted size of the data object.

### Claim 13 (depends on 1)

The method of claim 1, wherein the second data storage emulates direct access non-volatile memory by storing data in volatile memory and synchronizing the data to a file on a secondary storage.

### Claim 14

A system comprising:
a memory;
a processing device operatively coupled to the memory, the processing device to:
receive a request to create a data object;
store a first portion of the data object in a buffer in a first data storage;
determine a location in a second data storage in view of a predicted size of the data object;
migrate the first portion of the data object from the buffer to the location in the second data storage; and
in response to receiving a second portion of the data object, directly store the second portion in the second data storage.

### Claim 15 (depends on 14)

The system of claim 14, wherein the second data storage supports a plurality of access unit sizes to access a physical storage, wherein the plurality of access unit sizes comprise different block sizes.

### Claim 16 (depends on 15)

The system of claim 15, wherein the second data storage comprises multiple regions and each of the multiple regions uses one of the plurality of access unit sizes to access the physical storage.

### Claim 17 (depends on 15)

The system of claim 15, wherein to determine the location in the second data storage comprises the processor to:
compare one or more of the plurality of block sizes with the predicted size of the data object;
select one of the plurality of block sizes in view of the comparing; and
identify the location within the second storage that supports the selected block size.

### Claim 18

A non-transitory machine-readable storage medium storing instructions that cause a processing device to:
store a first portion of a data object in a buffer in a first data storage comprising volatile memory;
determine a location in a second data storage in view of a predicted size of the data object, wherein the second data storage comprises non-volatile memory;
migrate, by the processing device, the first portion of the data object from the buffer to the location in the second data storage; and
store the second portion in the second data storage directly.

### Claim 19 (depends on 18)

The non-transitory machine-readable storage medium of claim 18, wherein the second data storage supports a plurality of access unit sizes to access a physical storage, wherein the plurality of access unit sizes comprise different block sizes.

### Claim 20 (depends on 19)

The non-transitory machine-readable storage medium of claim 19, wherein to determine the location in the second data storage comprises the processor to:
compare one or more of the plurality of block sizes with the predicted size of the data object;
select one of the plurality of block sizes in view of the comparing; and
identify the location within the second storage that supports the selected block size.
