IP Library Granted Patent US 7,809,777
Granted Patent B2
US 7,809,777 · App. 11/173,808 · Granted Oct 5, 2010

File system having deferred verification of data integrity

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,809,777
App. No.
11/173,808
Granted
Oct 5, 2010
Kind
B2
Abstract

A computer system employs file system software to maintain a transaction file that includes a plurality of transaction records that each include a header section and a data section. The file system software executes a startup process in which a reconstructed file system is generated in a random access memory. During startup, the file system software selectively verifies only the header section of a transaction record or both the header section and data section of a transaction record based on certain criterion. The transaction records may be stored in Flash memory.

Claims (52)

1. A computer system comprising:

a persistent data storage;

file system code in memory storage, where the file system code is executable by a processor for managing file data and a file system structure of a plurality of files stored on the persistent data storage device; and

a transaction file maintained by an execution of the file system code, where the transaction file comprises a plurality of transaction records, and each transaction record of the plurality of transaction records comprises a header section and a data section, where the header section of each transaction record of the plurality of transaction records comprises one or more fields, each field of the one or more fields containing one or more header information items corresponding to a file transaction that is represented by each transaction record of the plurality of transaction records, where at least one first field of the one or more fields of the header section of each transaction record of the plurality of transaction records comprises a first integrity information for verifying a first integrity of the one or more header information items of the header section alone of each transaction record of the plurality of transaction records, and where at least one second field of the one or more fields of the header section of each transaction record of the plurality of transaction records comprises a second integrity information for verifying a second integrity of one or more data information items in the data section of the each transaction record of the plurality of transaction records,

where the file system code is executable to implement a startup process in which a reconstructed file system is generated in a random access memory using the plurality of transaction records of the transaction file,

where, when the header section of a transaction record of the plurality of transaction records meets a first predetermined criterion, the startup process uses the first integrity information in the at least one first field of the header section of the transaction record of the plurality of transaction records to verify the first integrity of the one or more header information items stored in the header section of the transaction record of the plurality of transaction records while skipping a verification of the second integrity of the one or more data information items stored in the data section of the transaction record of the plurality of transaction records as the startup process generates the reconstructed file system,

where, when the header section of the transaction record of the plurality of transaction records meets a second predetermined criterion, the startup process uses the at least one first field of the header section to verify the first integrity of the one or more header information items stored in the header section of the transaction record of the plurality of transaction records and the startup process uses the at least one second field of the header section of the transaction record of the plurality of transaction records to verify the second integrity of the one or more data information items in the data section of the transaction record of the plurality of transaction records as the startup process generates the reconstructed file system, and

where the file system code is executable to verify the second integrity of one or more data information items in one or more data sections of one or more transaction records of the plurality of transaction records which were not verified by the startup process, the one or more transaction records of the plurality of transaction records representing a given file of the plurality of files, when the given file of the plurality of files is accessed subsequent to a completion of the startup process.

2. A computer system comprising:

a persistent data storage device;

file system code in memory storage, where the file system code is executable by a processor for managing file data and a file system structure of a plurality of files stored on the persistent data storage device; and

a transaction file maintained by an execution of the file system code, the transaction file comprising a plurality of transaction records, where each transaction record of the plurality of transaction records comprises a header section and a data section, and the header section of each transaction record of the plurality of transaction records comprises one or more fields containing one or more header information items corresponding to a file transaction that is represented by each transaction record of the plurality of transaction records, where at least one first field of the one or more fields of the header section of each transaction record of the plurality of transaction records comprises a first integrity information for verifying the first integrity of the one or more header information items of the header section alone of each transaction record of the plurality of transaction records, and where at least one second field of the one or more fields of the header section of each transaction record of the plurality of transaction records comprises a second integrity information for verifying a second integrity of one or more data information items in the data section of each transaction record of the plurality of transaction records,

where the file system code is executable to implement a startup process in which a reconstructed file system is generated in a random access memory using the plurality of transaction records of the transaction file,

where, when the header section of a transaction record of the plurality of transaction records indicates that the transaction record of the plurality of transaction records affects a metadata of the file system structure, the startup process uses the at least one first field of the header section to verify the first integrity of the one or more header information items in the header section of the transaction record of the plurality of transaction records and the at least one second field of the header section of the transaction record of the plurality of transaction records to verify the second integrity of the one or more data information items in the data section of the transaction record of the plurality of transaction records as the startup process generates the reconstructed file system,

where, when the header section of a transaction record of the plurality of transaction records indicates that the transaction record of the plurality of transaction records does not affect the metadata of the file system structure, the startup process only verifies the first integrity of the one or more header information items of the header section of the transaction record of the plurality of transaction records using the first field of the header section of the transaction record of the plurality of transaction records while skipping a verification of the one or more data information items in the data section of the transaction record of the plurality of transaction records as the startup process generates the reconstructed file system, and

where the file system code is executable to verify the second integrity of one or more data information items in one or more data sections of one or more transaction record of the plurality of transaction records which were not verified by the startup process, of each transaction record the one or more transaction record of the plurality of transaction records representing a given file of the plurality of files when the given file of the plurality of files is accessed after a completion of the startup process.

3. A computer system comprising:

a persistent data storage device;

file system code in memory storage, where the file system code is executable by a processor for managing file data and a file system structure of a plurality of files stored on the persistent data storage device; and

a transaction file maintained by an execution of the file system code in a flash media, the flash media being organized into a plurality of memory blocks, where each memory block of the plurality of memory blocks comprises a plurality of memory pages, and the transaction file comprises a plurality of transaction records, where each transaction record of the plurality of transaction records comprises a header section and a data section, and the header section of each transaction record of the plurality of transaction records comprises one or more fields containing header information items corresponding to a file transaction that is represented by each transaction record of the plurality of transaction records, where at least one first field of the one or more fields of the header section of each transaction record of the plurality of transaction records comprises a first integrity information for verifying a first integrity of the one or more header information items of the header section alone of each transaction record of the plurality of transaction records, and where at least one second field of the one or more fields of the header section of each transaction record of the plurality of transaction records comprises a second integrity information for verifying a second integrity of one or more data information items in the data section of the transaction record of the plurality of transaction records,

where the file system code is executable to implement a startup process in which a reconstructed file system is generated in a random access memory, and the startup process uses the first field of the header section of a first occurring transaction record in a sequence of transaction records of the plurality of transaction records to verify the first integrity of the one or more header information items in the header section of the first occurring transaction record in the sequence of transaction records of the plurality of transaction records while skipping a verification of one or more tailing transaction records in the sequence of transaction records of the plurality of transaction records when the first occurring transaction record and the one or more tailing transaction records in the sequence of transaction records of the plurality of transaction records are stored in a same memory block of the plurality of memory blocks and affect a same file of the plurality of files, and

where the file system code is executable to verify the first integrity of one or more header information items of one or more header sections of the one or more transaction records of the plurality of transaction records which were not verified by the startup process and/or the second integrity of one or more data information items of one or more data sections of one or more transaction records of the plurality of transaction records which were not verified by the startup process, the one or more transaction records representing a given file of the plurality of files, when the given file of the plurality of files is accessed after a completion of the startup process.

4. The computer system as claimed in claim 1 where the startup process verifies the one or more header information items stored in the header section of two or more transaction records of the plurality of transaction records.

5. The computer system as claimed in claim 1 where the header section of each transaction record of the plurality of transaction records comprises an error correction code, and where the file system code is executable to use the error correction code of the header section of each transaction record of the plurality of transaction records to correct one or more errors in the one or more header information items stored in the header section of each transaction record of the plurality of transaction records.

6. The computer system as claimed in claim 1 where the persistent data storage device comprises a flash media.

7. The computer system as claimed in claim 6 where the flash media is organized into a plurality of memory blocks, and where each memory block of the plurality of memory blocks comprises a plurality of memory pages.

8. The computer system as claimed in claim 1 where the reconstructed file system comprises a regenerated file hierarchy and an extents table.

9. The computer system as claimed in claim 8 where the regenerated file hierarchy is organized by the file system code as an inverted file hierarchy.

10. The computer system as claimed in claim 1 where the startup process skips the verification of the second integrity of the one or more data information items stored in the data section of the transaction record of the plurality of transaction records unless the transaction record of the plurality of transaction records affects a metadata of the file system structure, and where the startup process verifies the one or more header information items stored in the header section of the transaction record of the plurality of transaction records and the one or more data information items stored in the data section of the transaction record of the plurality of transaction records when the transaction record affects the metadata of the file system structure.

11. The computer system as claimed in claim 7 where the startup process verifies the one or more header information items in the header section of a first occurring transaction record in a sequence of transaction records of the plurality of transaction records while skipping the any verification of one or more tailing transaction records of the sequence of transaction record of the plurality of transaction records when the first occurring transaction record and the one or more tailing transaction records in the sequence of transaction records of the plurality of transaction records are stored in a same memory block of the plurality of memory blocks and affect a same file of the plurality of files.

12. The computer system as claimed in claim 2 where the startup process verifies the one or more header information items stored in the header section of two or more transaction records of the plurality of transaction records.

13. The computer system as claimed in claim 2 where the header section of each transaction record of the plurality of transaction records comprises an error correction code, and where the file system code is executable to use the error correction code of the header section of each transaction record of the plurality of transaction records to correct one or more header information items stored in the header section of each transaction record of the plurality of transaction records.

14. The computer system as claimed in claim 2 where the persistent data storage device comprises a flash media.

15. The computer system as claimed in claim 14 where the flash media is organized into a plurality of memory blocks, and where each memory block of the plurality of memory blocks comprises a plurality of memory pages.

16. The computer system as claimed in claim 2 where the reconstructed file system comprises a regenerated file hierarchy and an extents table.

17. The computer system as claimed in claim 16 where the regenerated file hierarchy is organized by the file system code as an inverted file hierarchy.

18. The computer system as claimed in claim 14 where the startup process verifies the one or more header information items in the header section of a first occurring transaction record in a sequence of transaction records of the plurality of transaction records while skipping the verification of one or more tailing transaction records in the sequence of transaction records of the plurality of transaction records when the first occurring transaction record and the one or more tailing transaction records in the sequence of transaction records of the plurality of transaction records are stored in the a memory block of the plurality of memory blocks and affect a same file of the plurality of files.

19. The computer system as claimed in claim 3 where the startup process verifies one or more header information items stored in the header section of two or more transaction records of the plurality of transaction records.

20. The computer system as claimed in claim 3 where the header section of each transaction record of the plurality of transaction records comprises an error correction code, and where the startup process uses the error correction code of the header section of each transaction record of the plurality of transaction records to correct one or more errors in the one or more header information items stored in the header section of each transaction record of the plurality of transaction records.

21. The computer system as claimed in claim 3 where the reconstructed file system comprises a regenerated file hierarchy and an extents table.

22. The computer system as claimed in claim 21 where the regenerated file hierarchy is organized by the file system code as an inverted file hierarchy.

23. The computer system as claimed in claim 3 where the startup process skips the verification of the one or more data information items stored in the data section of a transaction record of the plurality of transaction records unless the transaction record of the plurality of transaction records affects a metadata of the file system structure, and where the startup process verifies the one or more header information items stored in the header section of the transaction record of the plurality of transaction records and the one or more data information items stored in the data section of the transaction record of the plurality of transaction records when the transaction record of the plurality of transaction records affects the metadata of the file system structure.

24. The computer system as claimed in claim 1 , where the file system code is executable to maintain a table indicating whether or not the first integrity of the one or more header information items in the header section of one or more transaction records of the plurality of transaction records for the given file of the plurality of files and whether or not the second integrity of the one or more data information items in the data section of the one or more transaction records of the plurality of transaction records for the given file of the plurality of files have been verified.

25. The computer system as claimed in claim 24 , where the file system code is executable to use the table to determine whether to verify the one or more header information items of one or more previously skipped header sections of the one or more transaction records of the plurality of transaction records representing the given file of the plurality of files and/or the one or more data information items of one or more previously skipped data sections of the one or more transaction records of the plurality of transaction records representing the given file of the plurality of files when the given file of the plurality of files is accessed after the completion of the startup process.

26. The computer system as claimed in claim 1 , where the file system code is executable to use one or more bits of a file node record in the reconstructed file system to indicate whether the first integrity of the one or more header information items of the header section of each transaction record of the plurality of transaction records for a file of the plurality of files at a file node and/or the second integrity of the one or more data information items of the data section of each transaction record of a plurality of transaction records for the file of the plurality of files at the file node have been verified.

27. The computer system as claimed in claim 1 , where the file system code is executable to solely verify the first integrity of the one or more data information items in the data section of one or more previously skipped data sections of one or more transaction records of the plurality of transaction records representing the given file of the plurality of files when the given file of the plurality of files is accessed after the completion of the startup process.

28. The computer system as claimed in claim 2 , where the file system code is executable to maintain a table indicating whether or not the first integrity of the one or more header information items in the header section of one or more transaction records of the plurality of transaction records for the given file of the plurality of files and the second integrity of the one or more data information items in the data section of the one or more transaction records of the plurality of transaction records for the given file of the plurality of files have been verified.

29. The computer system as claimed in claim 28 , where the file system code is executable to use the table to determine whether to verify the one or more header information items of one or more previously skipped header sections of the one or more transaction records of the plurality of transaction records representing the given file of the plurality of files and/or one or more data information items of one or more previously skipped data sections of the one or more transaction records of the plurality of transaction records representing the given file of the plurality of files when the given file of the plurality of files is accessed after the completion of the startup process.

30. The computer system as claimed in claim 2 , where the file system code is executable to use one or more bits of a file node record in the reconstructed file system to indicate whether the first integrity of the one or more header information items in the header section of one or more transaction records of the plurality of transaction records for a file of the plurality of files at a file node and/or the second integrity of the one or more data information items in the data section of one more transaction records of the plurality of transaction records for the file of the plurality of files at the file node have been verified.

31. The computer system as claimed in claim 3 , where the file system code is executable to maintain a table indicating whether or not the first integrity of the one or more header information items in the header section of one or more transaction records of the plurality of transaction records for the given file of the plurality of files and the second integrity of the one or more data information items of the data section of the one or more transaction records of the plurality of transaction records for the given file of the plurality of files has been verified.

32. The computer system as claimed in claim 31 , where the file system code is executable to use the table to determine whether to verify the one or more header information items of one or more previously skipped header sections of the one or more transaction records of the plurality of transaction records representing the given file of the plurality of files and/or one or more data information items of one or more previously skipped data sections of the one or more transaction records of the plurality of transaction records representing the given file of the plurality of files when the given file of the plurality of files is accessed after the completion of the startup process.

33. The computer system as claimed in claim 3 , where the file system code is executable to use one or more bits of a file node record in the reconstructed file system to indicate whether the first integrity of the one or more header information items of the header section of one or more transaction records of the plurality of transaction records for a file of the plurality of files at a file node and/or the second integrity of the one or more data information items of the data section of one or more transaction records of the plurality of transaction records for the file of the plurality of files at the file node have been verified.

Assignments (14)
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: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 026883/0544 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 026883/0553 →
CHANGE OF SEAT Recorded Aug 25, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024884/0667 →
REGISTRATION Recorded Aug 25, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024884/0649 →
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 →
CHANGE OF NAME Recorded Sep 12, 2006
From: QNX SOFTWARE SYSTEMS
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 018237/0293 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2005
From: DODGE, DAN
To: QNX SOFTWARE SYSTEMS
Reel/Frame 016839/0929 →