IP Library Granted Patent US 7,873,683
Granted Patent B2
US 7,873,683 · App. 11/450,141 · Granted Jan 18, 2011

File system having transaction record coalescing

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 7,873,683
App. No.
11/450,141
Granted
Jan 18, 2011
Kind
B2
Abstract

An electronic data system comprises memory storage having stored data, file system software, and a transaction file. The transaction file is maintained by the file system software, and includes a plurality of transaction records corresponding to transactions that have been or are to be executed on one or more files and/or the or more directories of the file system. The file system software operates to organize and maintain the stored data in the files and directories and also to coalesce multiple transaction records meeting one or more criteria into fewer coalesced transaction records. The physical memory space required by the transaction file is reduced by the transaction record coalescing. The coalesced transaction records may be constructed so that they represent a logical result of applying each transaction record of a transaction record set in chronological order. Once the coalesced transaction records have been committed in the file system, the physical memory used by the original transaction records in the set may be reclaimed for further use (e.g., to store further transaction records) or may be otherwise removed from further use (e.g., when the physical memory is located in a block of memory in a flash-like memory device that has reached its maximum number of write and/or erase cycles).

Claims (51)

1. An electronic data system comprising:

a flash memory having a stored data;

a file system code executable to organize and maintain the stored data in one or more files and one or more directories;

a transaction file maintained by the file system code in the flash memory, the transaction file comprising a plurality of transaction records stored on the flash memory, where the plurality of transaction records correspond to a plurality of transactions that have been, or are to be executed, on the one or more files and/or the one or more directories, where each transaction record of the plurality of transaction records comprises a header section and a data section, where each header section identifies a file of the one or more files and/or a directory of the one or more directories associated with each data section; and

where the file system code coalesces the plurality of transaction records stored on the flash memory by:

scanning each header section of each transaction record of the plurality of transaction records to identify a first subset of the plurality of transaction records directed to a same file, a second subset of the plurality of transaction records directed to a same logical portion of a file, and/or a third subset of the plurality of transaction records directed to a same directory, and

combining the first subset of the plurality of transaction records identified during the scanning as directed to the same file into one or more first coalesced transaction records and releasing one or more transaction records of the first subset of the plurality of transaction records identified as directed to the same file as a free memory to thereby reduce an amount of memory used by the transaction file,

combining the second subset of the plurality of transaction records identified during the scanning as directed to the same logical portion of the file into one or more second coalesced transaction records and releasing one or more transaction records of the second subset of the plurality of transaction records identified as directed to the same logical portion of the file as the free memory to thereby reduce the amount of memory used by the transaction file, and/or

combining the third subset of the plurality of transaction records identified during the scanning as directed to the same directory into one or more third coalesced transaction records and releasing one or more transaction records of the third subset of the plurality of transaction records identified as directed to the same directory as the free memory to thereby reduce the amount of memory used by the transaction file;

and where each header section of each transaction record of the plurality of transaction records further comprises a first field used to determine the starting address at which the data section is to be written into the identified file of the one or more files and/or the identified directory of the one or more directories, and a second field used to determine an amount of the identified file of the one or more files and/or the identified directory of the one or more directories that is to be overwritten.

2. The electronic data system of claim 1 where the file system code is executable to assign one or more transaction identifiers to the one or more first coalesced transaction records, the one or more second coalesced transaction records and/or the one or more third coalesced transaction records.

3. The electronic data system of claim 1 where the file system code further coalesces the plurality of transaction records stored on the flash memory by:

generating a first transaction record set comprising the first subset of the plurality of transaction records directed to the same file,

generating a second transaction record set comprising the second subset of the plurality of transaction records directed to the same logical portion of the file, and/or

generating a third transaction record set comprising the third subset of the plurality of transaction records directed to the same directory pursuant to coalescing the plurality of transaction records.

4. The electronic data system of claim 3 where the first, the second, and/or the third transaction record sets comprise a plurality of pointers to a plurality of locations in the transaction file of the first, the second, and/or the third subset of the plurality of transaction records, respectively.

5. The electronic data system of claim 3 where the first, the second, and/or the third transaction record sets are formatted in a same manner as a manner in which a corresponding transaction record of the plurality of transaction records is formatted in the transaction file.

6. The electronic data system of claim 3 where the file system code is further executable to:

apply, pursuant to generating the first transaction record set, the first subset of the plurality of transaction records directed to the same file in a first chronological sequence corresponding to a first time order in which each transaction record of the first subset of the plurality of transaction records directed to the same file originally occurred;

apply, pursuant to generating the second transaction record set, the second subset of the plurality of transaction records directed to the same logical portion of a file in a second chronological sequence corresponding to a second time order in which each transaction record of the second subset of the plurality of transaction records directed to the same logical portion of the file occurred; and/or

apply, pursuant to generating the third transaction record set, the third subset of the plurality of transaction records directed to the same directory in a third chronological sequence corresponding to a third time order in which each transaction record of the second subset of the plurality of transaction records directed to the same directory occurred.

7. The electronic data system of claim 3 where file system code is executable to:

combine the plurality of transaction records of the first transaction record set to reduce a first number of transaction records directed to the same file;

combine the plurality of transaction records of the second transaction record set to reduce a second number of transaction records directed to the same logical portion of a file; and/or

combine the plurality of transaction records of the third transaction record set to reduce a third number of transaction records directed to the same directory.

8. The electronic data system of claim 1 where the file system code is executable to reclaim a residual physical storage space that results from coalescing the plurality of transaction records for use in storing additional transaction records.

9. The electronic data system of claim 1 where each header section of each transaction record of the plurality of transaction records further comprises a status field which is indicative of whether each transaction record of the plurality of transaction records has been committed.

10. A computer readable storage medium having a plurality of computer- executable instructions for performing a method comprising:

organizing and maintaining a plurality of files and a plurality of directories stored on a flash memory device;

maintaining, on the flash memory device, a transaction file comprising a plurality of transaction records where each transaction record comprises a header section and a data section, where each header section identifies a file of the plurality of files and/or a directory of the plurality of directories associated with each data section;

coalescing the plurality of transaction records stored on the flash memory device by:

scanning each header section of each transaction record of the plurality of transaction records to identify a first subset of the plurality of transaction records directed to a same file, a second subset of the plurality of transaction records directed to a same logical portion of a file, and/or a third subset of the plurality of transaction records directed to a same directory,

combining the first subset of the plurality of transaction records identified during the scanning as directed to the same file into one or more first coalesced transaction records and releasing one or more transaction records of the first subset of the plurality of transaction records identified as directed to the same file to thereby reduce an amount of memory used by the transaction file,

combining the second subset of the plurality of transaction records identified during the scanning as directed to the same logical portion of the file into one or more second coalesced transaction records and releasing one or more transaction records of the second subset of the plurality of transaction records identified as directed to the same logical portion of the file to thereby reduce the amount of memory used by the transaction file, and/or

combining the third subset of the plurality of transaction records identified during the scanning as directed to the same directory into one or more third coalesced transaction records and releasing one or more transaction records of the third subset of the plurality of transaction records identified as directed to the same directory to thereby reduce the amount of memory used by the transaction file;

and where each header section of each transaction record of the plurality of transaction records further comprises a first field used to determine the starting address at which the data section is to be written into the identified file of the one or more files and/or the identified directory of the one or more directories, and a second field used to determine an amount of the identified file of the one or more files and/or the identified directory of the one or more directories that is to be overwritten.

11. The computer readable storage medium of claim 10 where the method further comprises assigning one or more transaction identifiers to the one or more first coalesced transaction records, the one or more second coalesced transaction records, and/or the one or more third coalesced transaction records.

12. The computer readable storage medium of claim 10 where the method further comprises:

generating, pursuant to coalescing the plurality of transaction records, a first transaction record set from the first subset of the plurality of transaction records directed to the same file;

generating, pursuant to coalescing the plurality of transaction records, a second transaction record set from the second subset of the plurality of transaction records directed to the same logical portion of the file, and/or

generating, pursuant to coalescing the plurality of transaction records, a third transaction record set from the third subset of the plurality of transaction records directed to the same directory.

13. The computer readable storage medium of claim 12 where the method further comprises:

combining the plurality of transaction records of the first transaction record set to reduce a first number of transaction records directed to the same file;

combining the plurality of transaction records of the second transaction record set to reduce a second number of transaction records directed to the same logical portion of the file; and/or

combining the transaction records of the third transaction record set to reduce a third number of transaction records directed to the same directory.

14. The computer readable storage medium of claim 12 where the method further comprises:

combining the plurality of transaction records of the first transaction record set to generate a first single record directed to the same file;

combining the plurality of transaction records of the second transaction record set to generate a second single record directed to the same logical portion of the file; and/or

combining the plurality of transaction records of the third transaction record set to generate a third single record directed to the same directory.

15. The computer readable storage medium of claim 10 where each header section of each transaction record of the plurality of transaction records further comprises a first verification field to verify and correct the header section of each transaction record of the plurality of transaction records and a second verification field to verify and correct the data section of each transaction record of the plurality of transaction records.

16. The computer readable storage medium of claim 10 where each header section of each transaction record of the plurality of transaction records further comprises a first status field indicative of a condition of a memory location in which each transaction record of the plurality of transaction records is stored.

Assignments (13)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: 8758271 CANADA INC.
To: 2236008 ONTARIO INC.
Reel/Frame 032607/0674 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: QNX SOFTWARE SYSTEMS LIMITED
To: 8758271 CANADA INC.
Reel/Frame 032607/0943 →
CHANGE OF ADDRESS Recorded Feb 27, 2012
From: QNX SOFTWARE SYSTEMS LIMITED
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 027768/0961 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 026883/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 026883/0544 →
CHANGE OF SEAT Recorded Aug 20, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024868/0358 →
REGISTRATION Recorded Aug 20, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024868/0402 →
PARTIAL RELEASE OF SECURITY INTEREST Recorded Jun 3, 2010
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024483/0045 →
SECURITY AGREEMENT Recorded May 8, 2009
From: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; BECKER SERVICE-UND VERWALTUNG GMBH; CROWN AUDIO, INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS (MICHIGAN), INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS HOLDING GMBH; HARMAN BECKER AUTOMOTIVE SYSTEMS, INC.; HARMAN CONSUMER GROUP, INC.; HARMAN DEUTSCHLAND GMBH; HARMAN FINANCIAL GROUP LLC; HARMAN HOLDING GMBH & CO. KG; HARMAN MUSIC GROUP, INCORPORATED; HARMAN SOFTWARE TECHNOLOGY INTERNATIONAL BETEILIGUNGS GMBH; HARMAN SOFTWARE TECHNOLOGY MANAGEMENT GMBH; HBAS INTERNATIONAL GMBH; HBAS MANUFACTURING, INC.; INNOVATIVE SYSTEMS GMBH NAVIGATION-MULTIMEDIA; JBL INCORPORATED; LEXICON, INCORPORATED; MARGI SYSTEMS, INC.; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS CANADA CORPORATION; QNX SOFTWARE SYSTEMS CO.; QNX SOFTWARE SYSTEMS GMBH; QNX SOFTWARE SYSTEMS GMBH & CO. KG; QNX SOFTWARE SYSTEMS INTERNATIONAL CORPORATION; QNX SOFTWARE SYSTEMS, INC.; XS EMBEDDED GMBH (F/K/A HARMAN BECKER MEDIA DRIVE TECHNOLOGY GMBH)
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 022659/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2006
From: DODGE, DAN
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 018125/0696 →