# US 2014/0195571 A1 · Fast new file creation cache

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

- Number: US 2014/0195571 A1
- Document ID: US20140195571A1
- Status: Published application
- Kind: A1
- Application number: 13/736,817
- Filed: 2013-01-08
- Published: 2014-07-10
- Earliest claimed: 2013-01-08
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Wenguang Wang; David A. Majnemer; Deric S. Horn
- Web page: https://patentgrep.com/patent/US20140195571A1

## CPC

- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 3/068: {Hybrid storage device}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 16/172: Caching, prefetching or hoarding of files
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one embodiment, a new file creation cache is reserved on a fast storage device that is part of a composite storage device that also includes a slow storage device; the composite storage device is treated as a single logical volume (or a plurality of logical volumes) by a file system which maintains a mapping table that is used to determine whether the write operation is for a new file. If the write operation is for a new file, the file system attempts to write the new file to the fast storage device. If the write operation is not for a new file, the mapping table specifies which device is used for the write operation.

## Claims

### Claim 1

A machine readable non-transitory storage medium storing executable computer program instructions which when executed by a data processing system cause the data processing system to perform a method for operating a non-volatile storage system which is treated as at least one logical volume and which is a composite system that includes a fast non-volatile storage device and a slow non-volatile storage device, the method comprising:
maintaining a mapping table which maps a logical address for the logical volume to a physical address of one of the fast or the slow non-volatile storage devices, the logical address being specified by a file system;
receiving a request for a write operation having data to be written to the logical volume;
determining if the write operation is for a new file in the file system;
writing the data for the write operation to one or more portions of the fast non-volatile storage device in response to determining that the write operation is for a new file and in response to determining that the fast non-volatile storage device has sufficient available space;
determining from the mapping table whether to write the data for the write operation to one of the fast or the slow non-volatile storage device in response to determining that the write operation is not for a new file;
writing the data for the write operation to the fast or the slow non-volatile storage device as specified by the mapping table in response to determining that the write operation is not for a new file.

### Claim 2 (depends on 1)

The medium as in claim 1 wherein the method further comprises:
determining whether free space on the fast non-volatile storage device is less than a value and moving data from the fast storage device to the slow storage device if the free space is less than the value in order to reserve some free space on the fast storage device for new file creation.

### Claim 3 (depends on 1)

The medium as in claim 1 wherein the method further comprises:
storing the mapping table in the fast storage device.

### Claim 4 (depends on 1)

The medium as in claim 1 wherein the write operation is determined to be for a new file when the write operation specifies a logical address in an empty or free location of the mapping table.

### Claim 5 (depends on 4)

The medium as in claim 4 wherein the write operation is determined not to be for a new file when the write operation specifies a logical address that is for an existing file that is to be overwritten in its existing location on one of the fast or the slow storage device.

### Claim 6 (depends on 5)

The medium as in claim 5 wherein the method further comprises:
determining whether free space on the fast storage device is less than a value and moving data from the fast storage device to the slow storage device if the free space is less than the value.

### Claim 7 (depends on 6)

The medium as in claim 6 wherein the new file is a revised version of an existing file which is deleted after the new file is written to the fast storage device, and wherein the fast storage device is an electrically erasable semiconductor memory and the slow storage device is a magnetic hard drive.

### Claim 8

A data processing system comprising:
a processing system comprising at least a first processor;
a volatile memory storing at least a portion of an executing file system and an operating system;
a non-volatile memory which is a composite system treated as at least one logical volume by the file system and which comprises a fast storage device and a slow storage device, wherein the processing system is configured to store and maintain a mapping table which maps a logical address for the logical volume to a physical address of one of the fast and the slow storage device, the logical address being specified by the file system and wherein the processing system is configured to receive a request for a write operation for data to be written to the logical volume and is configured to determine whether the write operation is for a new file in the file system; and
wherein the processing system is configured to write the data for the write operation to one or more portions of the fast storage device in response to determining that the write operation is for a new file in the file system and in response to determining that the fast storage device has sufficient available space; and
wherein the processing system is configured to determine from the mapping table whether to write the data for the write operation to one of the fast or the slow storage devices in response to determining that the write operation not for a new file and the processing system is configured to cause the writing of the data to either of the fast or the slow storage devices as specified by the mapping table when the write operation is not for a new file.

### Claim 9 (depends on 8)

The data processing system as in claim 8 wherein the processing system is configured to determine whether free space on the fast storage device is less than a value and is configured to move data from the fast storage device to the slow storage device if the free space is less than the value in order to reserve some frees pace on the fast storage device for new file creation.

### Claim 10 (depends on 9)

The data processing system as in claim 9 wherein the mapping table is stored in the fast storage device and wherein the write operation is determined to be for a new file when the write operation specifies a logical address in an empty or free location of the mapping table.

### Claim 11 (depends on 10)

The data processing system as in claim 10 wherein the write operation is determined not to be for a new file when the write operation specifies a logical address that is for an existing file that is to overwritten in its existing location on one of the fast or the slow storage device.

### Claim 12 (depends on 11)

The data processing system as in claim 11 wherein the new file is a revised version of an existing file which is deleted after the new file is written to the fast storage device, and wherein the fast storage device is an electrically erasable semiconductor memory and the slow storage device is a magnetic hard drive.

### Claim 13

A method for operating a non-volatile storage system which is treated as at least one logical volume and which is a composite system that includes a fast non-volatile storage device and a slow non-volatile storage device, the method comprising;
maintaining a mapping table which maps a logical address for the logical volume to a physical address of one of the fast or the slow non-volatile storage devices, the logical address being specified by a file system;
receiving a request for a write operation having data to be written to the logical volume;
determining if the write operation is for a new file in the file system;
writing the data for the write operation to one or more portions of the fast non-volatile storage device in response to determining that the write operation is for a new file and in response to determining that the fast non-volatile storage device has sufficient available space;
determining from the mapping table whether to write the data for the write operation to one of the fast or the slow non-volatile storage device in response to determining that the write operation is not for a new file;
writing the data for the write operation to the fast or the slow non-volatile storage device as specified by the mapping table in response to determining that the write operation is not for a new file.

### Claim 14 (depends on 13)

The method as in claim 13 wherein the method further comprises:
determining whether free space on the fast non-volatile storage device is less than a value and moving data from the fast storage device to the slow storage device if the free space is less than the value in order to reserve some free space on the fast storage device for new file creation.

### Claim 15 (depends on 13)

The method as in claim 13 wherein the method further comprises;
storing the mapping table in the fast storage device.

### Claim 16 (depends on 13)

The method as in claim 13 wherein the write operation is determined to be for a new file when the write operation specifies a logical address in an empty or free location of the mapping table.

### Claim 17 (depends on 16)

The method as in claim 16 wherein the write operation is determined not to be for a new file when the write operation specifies a logical address that is for an existing file that is to be overwritten in its existing location on one of the fast or the slow storage device.

### Claim 18 (depends on 17)

The method as in claim 17 wherein the method further comprises:
determining whether free space on the fast storage device is less than a value and moving data from the fast storage device to the slow storage device if the free space is less than the value.

### Claim 19 (depends on 18)

The method as in claim 18 wherein the new file is a revised version of an existing file which is deleted after the new file is written to the fast storage device, and wherein the fast storage device is an electrically erasable semiconductor memory and the slow storage device is a magnetic hard drive.

### Claim 20

A data processing system having a non-volatile storage system which is treated as at least one logical volume and which is a composite system that includes a fast non-volatile storage device and a slow non-volatile storage device, the data processing system comprising:
means for maintaining a mapping table which maps a logical address for the logical volume to a physical address of one of the fast or the slow non-volatile storage devices, the logical address being specified by a file system;
means for receiving a request for a write operation having data to be written to the logical volume;
means for determining if the write operation is for a new file in the file system;
means for writing the data for the write operation to one or more portions of the fast non-volatile storage device in response to determining that the write operation is for a new file and in response to determining that the fast non-volatile storage device has sufficient available space;
means for determining from the mapping table whether to write the data for the write operation to one of the fast or the slow non-volatile storage device in response to determining that the write operation is not for a new file;
means for writing the data for the write operation to the fast or the slow non-volatile storage device as specified by the mapping table in response to determining that the write operation is not for a new file.
