IP Library Granted Patent US 10,664,196
Granted Patent B2
US 10,664,196 · App. 16/036,490 · Granted May 26, 2020

Random access file management

Inventor: Soeren Balko (Indooroopilly, AU)
Assignee: Clipchamp IP Pty Ltd
G06F3/0659G06F3/0604G06F3/064G06F3/0643G06F3/0673G06F12/0223G06F12/08
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,664,196
App. No.
16/036,490
Granted
May 26, 2020
Kind
B2
Abstract

A method for modifying a file having a file size exceeding a size of available main memory, the file arranged in one or more existing data blocks, by writing an array of new data to the file at a file offset to replace a portion of the existing data of the file. The method including determining one or more target data blocks of the file which contain data to be replaced, considering a size of the array of new data, the block size of the file and the file offset within the file, retrieving at least one of the target data blocks from the file, creating at least one new data block comprised of at least one of the one or more write byte arrays, and writing the new data block to the file at the location of the target data blocks.

Claims (57)

1. A method for modifying a file having a file size exceeding a size of available main memory, the file comprising existing data arranged in one or more existing data blocks stored in at least one persistent memory source,

by writing an array of new data to the file at a file offset within the file, to replace a portion of the existing data of the file,

the method comprising:

identifying a block size of the one more existing data blocks of the file;

determining one or more target data blocks of the file, the target data blocks being existing data blocks of the file which contain data to be replaced by a portion of the array of new data, said determining taking into consideration a size of the array of new data, the block size of the file and the file offset within the file;

determining one or more write byte arrays, each write byte array being a portion of the array of new data;

performing one or more write operations, said write operations comprising the steps of:

identifying a location of at least one of the one or more target data blocks within the file;

retrieving the at least one of the one or more target data blocks from the file into the available main memory;

creating at least one new data block comprised of at least one of the one or more write byte arrays; and

writing the at least one new data block to the file at the location of the at least one of the one or more target data blocks, wherein the new data block is created by writing a subset of the contents of the at least one of the one or more target data blocks into a first portion of the new data block, and writing the contents of the at least one of the one or more write byte arrays into a second portion of the new data block.

2. A method for modifying a file having a file size exceeding a size of available main memory, the file comprising existing data arranged in one or more existing data blocks stored in at least one persistent memory source,

by writing an array of new data to the file at a file offset within the file, to replace a portion of the existing data of the file,

the method comprising:

identifying a block size of the one more existing data blocks of the file;

determining one or more target data blocks of the file, the target data blocks being existing data blocks of the file which contain data to be replaced by a portion of the array of new data, said determining taking into consideration a size of the array of new data, the block size of the file and the file offset within the file;

determining one or more write byte arrays, each write byte array being a portion of the array of new data;

performing one or more write operations, said write operations comprising the steps of:

identifying a location of at least one of the one or more target data blocks within the file;

retrieving the at least one of the one or more target data blocks from the file into the available main memory;

creating at least one new data block comprised of at least one of the one or more write byte arrays; and

writing the at least one new data block to the file at the location of the at least one of the one or more target data blocks, wherein the one or more write operations includes a plurality of write operations, each write operation creating at least one new data block comprised of at least one of a plurality of write byte arrays.

3. The method of claim 2 , wherein each of the plurality of write byte arrays is a unique portion of the array of new data.

4. The method of claim 2 , wherein the one or more target data blocks of the file includes a plurality of target data blocks.

5. The method of claim 4 , wherein the plurality of target data blocks is read from the persistent memory source in one operation.

6. The method of claim 4 , wherein the plurality of target data blocks is read from the persistent memory source in a series of operations.

7. The method of claim 4 , wherein a plurality of new data blocks is created, each new data block being comprised of one of the plurality of write byte arrays and a subset of one of the plurality of target data blocks.

8. The method of claim 7 , wherein the plurality of new data blocks is written to the persistent memory source in one operation.

9. The method of claim 7 , wherein the plurality of new data blocks is written to the persistent memory source in a series of operations.

10. The method of claim 7 , wherein at least one of the plurality of new data blocks is written to the persistent memory source before all the target data blocks have been retrieved from the persistent memory source.

11. A system for modifying a file having a size exceeding a size of available main memory, the file comprising existing data arranged in one or more existing data blocks stored in at least one persistent memory source,

by writing an array of new data to the file at a file offset within the file, to replace a portion of the existing data of the file,

the system comprising:

a file controller, configured to interface with main memory; and

a memory interface, configured to provide an interface between the at least one persistent memory source and the file controller;

the file controller configured to:

identify a block size of the one more existing data blocks of the file;

determine one or more target data blocks of the file, the target data blocks being existing data blocks of the file which contain data to be replaced by a portion of the array of new data, said determining taking into consideration a size of the array of new data, the block size of the file and the file offset within the file;

determine one or more write byte arrays, each write byte array being a portion of the array of new data;

perform one or more write operations, said write operations comprising the steps of:

identifying a location of at least one of the one or more target data blocks within the file;

instructing the memory interface to retrieve the at least one of the one or more target data blocks from the file into available main memory;

creating at least one new data block comprised of at least one of the one or more write byte arrays; and

instructing the memory interface to write the at least one new data block to the file at the location of the at least one of the one or more target data blocks, wherein the new data block is created by writing a subset of the contents of the at least one of the one or more target data blocks into a first portion of the new data block, and writing the contents of the at least one of the one or more write byte arrays into a second portion of the new data block.

12. A system for modifying a file having a size exceeding a size of available main memory, the file comprising existing data arranged in one or more existing data blocks stored in at least one persistent memory source, by writing an array of new data to the file at a file offset within the file, to replace a portion of the existing data of the file,

the system comprising:

a file controller, configured to interface with main memory; and

a memory interface, configured to provide an interface between the at least one persistent memory source and the file controller;

the file controller configured to:

identify a block size of the one more existing data blocks of the file;

determine one or more target data blocks of the file, the target data blocks being existing data blocks of the file which contain data to be replaced by a portion of the array of new data, said determining taking into consideration a size of the array of new data, the block size of the file and the file offset within the file;

determine one or more write byte arrays, each write byte array being a portion of the array of new data;

perform one or more write operations, said write operations comprising the steps of:

identifying a location of at least one of the one or more target data blocks within the file;

instructing the memory interface to retrieve the at least one of the one or more target data blocks from the file into available main memory;

creating at least one new data block comprised of at least one of the one or more write byte arrays; and

instructing the memory interface to write the at least one new data block to the file at the location of the at least one of the one or more target data blocks, wherein the one or more write operations includes a plurality of write operations, each write operation creating at least one new data block comprised of at least one of a plurality of write byte arrays.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2025
From: CLIPCHAMP IP PTY LTD
To: MICROSOFT CLIPCHAMP HOLDINGS PTY LTD
Reel/Frame 072033/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2018
From: BALKO, SOEREN
To: CLIPCHAMP IP PTY LTD
Reel/Frame 047370/0711 →
Continuity (2)
Provisional Application 62532392 · Jul 14, 2017
Related Publication 20190018614A1 · Jan 17, 2019