IP Library Granted Patent US 9,588,884
Granted Patent B2
US 9,588,884 · App. 13/827,151 · Granted Mar 7, 2017

Systems and methods for in-place reorganization of device storage

Inventors: Evyatar Meller (Yad Binyamin, IL); Yoav Salarios (Hod Hasharon, IL)
Assignee: RED BEND LTD.
G06F12/0246G06F3/0608G06F3/0644G06F3/0679G06F3/0604G06F8/65G06F8/665G06F2212/7202
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 9,588,884
App. No.
13/827,151
Granted
Mar 7, 2017
Kind
B2
Abstract

A method, and system for carrying out the method, for in-place reorganization of content, organized according to an original organization scheme, which is stored in a non-volatile storage of a device, to a target organization scheme. The method includes obtaining instructions to reorganize the content to a defined target organization scheme. The method further includes (i) generating, based on the instructions and applying target organization logic to a virtual storage, a sequence of update commands for generating, in the non-volatile storage, at least one target storage unit organized according to the defined target organization scheme, and (ii) executing the update commands on the non-volatile storage. Potential write-before-read conflicts may be identified based on the sequence of update commands, and potential conflicts resolved by reordering, adding, deleting, altering commands, and/or backing up content. The instructions may include instructions to repartition the nonvolatile storage from an original partition layout to a defined target partition layout.

Claims (72)

1. A method for in-place reorganization of content stored in a non-volatile storage of a computing device and organized according to an original organization scheme having at least one original storage unit and an original organization logic associated therewith, to a target organization scheme having at least one target storage unit and a target organization logic associated therewith, the method comprising:

obtaining, by the computing device, instructions to reorganize the content in the non-volatile storage of the computing device from the original organization scheme to a defined target organization scheme;

after obtaining said reorganization instructions, generating, by the computing device, based on (i) the obtained reorganization instructions and (ii) an application of the target organization logic to a virtual storage, a sequence of update commands for generating in the non-volatile storage the at least one target storage unit organized according to the defined target organization scheme, wherein each obtained reorganization instruction is a basis for the generation of one or more update commands; and

executing, by the computing device, the sequence of update commands, generated by the computing device on a basis of said obtained reorganization instructions, on the non-volatile storage to reorganize the content in the non-volatile storage from the original organization scheme to the defined target organization scheme.

2. The method of claim 1 , wherein the at least one original storage unit or at least one target storage unit is not necessarily contiguous in the non-volatile storage.

3. The method of claim 1 , further comprising:

identifying, based on the sequence of update commands, potential write-before-read conflicts; and

resolving the identified potential write-before-read conflicts.

4. The method of claim 3 , further comprising:

backing up content from the non-volatile storage required for enabling failsafe reorganization, to a backup in a designated non-volatile storage area of the computing device.

5. The method of claim 3 , wherein the resolving comprises one or more of:

reordering the sequence of update commands;

backing up content corresponding to an identified potential write-before-read conflict, to a backup in a designated non-volatile storage area of the computing device;

adding update commands;

deleting update commands; and

altering update commands.

6. The method of claim 5 , wherein the generating of the sequence of update commands further comprises optimizing the backing up by reducing the amount of storage required for the backup or the time required to create the backup.

7. The method of claim 1 , wherein the instructions include instructions to update the content.

8. The method of claim 1 , wherein:

the non-volatile storage comprises a plurality of partitions each having respective organization logic associated with it;

the original and target organization schemes each includes a partition layout indicating sizes, locations and formats of the plurality of partitions; and

the instructions include instructions to repartition the non-volatile storage from an original partition layout to a defined target partition layout.

9. The method of claim 8 , wherein the instructions to repartition comprise at least one of: move, reformat, change format, defragment, create, resize, delete and update commands for respective partitions of the plurality of partitions.

10. The method of claim 9 , wherein:

the plurality of partitions contains at least one file system partition storing data in a specific file system format.

11. The method of claim 10 , wherein:

the device operates according to a Linux or an Android operating system; and

the at least one file system partition is a fourth extended file system (ext4) partition.

12. The method of claim 1 , wherein the generating of the sequence of update commands comprises:

obtaining the content stored in the non-volatile storage organized according to the original organization scheme by using the original organization logic;

applying the target organization logic to the obtained content for virtually writing the obtained content to a virtual storage;

capturing data elements virtually written by the target organization logic to their respective target locations in the non-volatile storage without necessarily writing to the non-volatile storage;

determining, for the data elements, whether they are part of the content stored in the non-volatile storage;

for data elements that are determined to not be part of the content stored in the non-volatile storage, generating update commands for storing these data elements to their respective target locations; and

for data elements that are determined to be part of the content stored in the non-volatile storage, (i) determining their original locations in the non-volatile storage and (ii) creating, as part of the update commands, a mapping between their original locations in the non-volatile storage and their respective target locations in the non-volatile storage.

13. The method of claim 12 , wherein the original locations and target locations are absolute locations in the non-volatile storage.

14. The method of claim 12 , wherein the original locations and target locations are relative to actual starting locations in the non-volatile storage, the method further comprising, prior to the executing of the update commands:

obtaining the actual starting locations in the non-volatile storage; and

adjusting the locations in the update commands based on the actual starting locations.

15. The method of claim 1 , wherein the computing device remains operational during the reorganizing.

16. The method of claim 1 , wherein the obtaining of instructions includes generating instructions internally on the device in accordance with an internal rule.

17. The method of claim 1 , wherein the obtaining of instructions includes receiving instructions from an external source.

18. A non-transitory computer readable medium having program logic stored thereon that, if executed by a computing device having a non-volatile storage with an original organization scheme including a plurality of original storage units each having a respective, original organization logic associated therewith, cause the computing device to:

obtain instructions to reorganize the non-volatile storage of the computing device from the original organization scheme to a defined target organization scheme having a plurality of target storage units, each having a respective, target organization logic associated therewith;

generate, on the computing device, based on the obtained instructions and a simulation of the target organization logics, a sequence of update commands for generating the plurality of target storage units in the non-volatile storage, wherein each obtained reorganization instruction is a basis for the generation of one or more update commands;

identify, based on the sequence of update commands generated on the basis of said obtained reorganization instructions, potential write-before-read conflicts that may result in data in the non-volatile storage being overwritten if the update commands are carried out;

resolve the identified potential write-before-read conflicts; and

execute the update commands on the non-volatile storage to reorganize the content in the non-volatile storage from the original organization scheme to the defined target organization scheme.

19. The computer readable medium of claim 18 , wherein the computing device is a mobile computing device.

20. The computer readable medium of claim 18 , wherein the original organization scheme comprises a file system or database including a plurality of data elements, and wherein the program logic further causes the computing device to:

create a mapping between the plurality of data elements in the original organization scheme and a plurality of target data elements in the defined target organization scheme; and

for each data element of the file system or database:

search for data blocks in the non-volatile storage containing contents of the data element;

simulate the original organization scheme and record original locations in the non-volatile storage corresponding to the data blocks; and

simulate the defined target organization scheme to record write locations of the target organization tool without writing to the non-volatile storage.

21. The computer readable medium of claim 20 , wherein the write locations are:

locations in the non-volatile storage relative to a starting location; and

absolute locations in the non-volatile storage.

22. The computer readable medium of claim 21 , wherein the program logic further causes the computing device to:

determine an actual starting location in the non-volatile storage;

generate copy commands to copy the data blocks from their respective original locations to the recorded write locations; and

alter the write locations of the copy commands based on the actual starting location.

23. The computer readable medium of claim 22 , wherein the actual starting location is 0 and the actual starting location is based on the original organization scheme in the non-volatile storage.

24. The computer readable medium of claim 20 , wherein the data elements comprise files and records.

25. A system for in-place reorganization of non-volatile storage, the system comprising:

a computing device including a non-volatile storage having an original organization scheme, said computing device being configured to

obtain instructions to reorganize the non-volatile storage, of the computing device, from the original organization scheme to a defined target organization scheme having at least one target storage unit and a target organization logic associated therewith;

generate, on the computing device, based on the obtained reorganization instructions and a simulation of the target organization logic, a sequence of update commands for generating the at least one target storage unit in the non-volatile storage, wherein each obtained reorganization instruction is a basis for the generation of one or more update commands;

invoke the target organization logic to identify, based on the sequence of update commands generated on the basis of said obtained reorganization instructions, potential write-before-read conflicts that may result in data in the non-volatile storage, of the computing device, being overwritten if the update commands are carried out;

resolve the identified potential write-before-read conflicts by re-sequencing update commands associated with identified conflicts; and

execute the update commands on the non-volatile storage to reorganize the content in the non-volatile storage from the original organization scheme to a defined target organization scheme.

26. The system of claim 25 , wherein the computing device is further configured to simulate the target organization logic to record its targeted write locations in the non-volatile storage without writing to the non-volatile storage.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2013
From: MELLER, EVYATAR; SALARIOS, YOAV
To: RED BEND LTD.
Reel/Frame 030000/0464 →
Continuity (3)
Provisional Application 61664634 · Jun 26, 2012
Related Publication 20140281125A1 · Sep 18, 2014
Related Publication 20160170869A9 · Jun 16, 2016