Managing file structures for a flash memory file system in a computer
First Claim
1. A method of cleaning up a logical block of a flash memory subsystem, the method comprising the steps of:
- transferring information from block allocation structures and file structures of a first logical block of a flash memory subsystem having a first logical block identifier to corresponding block allocation structures and file structures of a second logical block of the flash memory subsystem having a second logical block identifier, the block allocation structures in each logical block storing physical address offsets for the file structures, the file structures including directory entry structures that specify directories, file entry structures that specify files, and file information structures with corresponding extent blocks that store file data, the directory entry and file entry data structures forming a linked list file structure that defines a file system hierarchy, and the file information structures linking the extent blocks to the file system hierarchy;
compressing the file structures into the second logical block by discarding deleted file information structures and extent blocks and modifying the linked list hierarchy to eliminate deleted file entry and directory entry structures;
reprogramming the logical block identifier of the second logical block to reflect the logical block identifier of the first logical block;
erasing the first logical block; and
programming the logical block identifier of the first logical block to reflect a cleaned up status.
0 Assignments
0 Petitions
Accused Products
Abstract
A method for compressing a set of file structures in a flash memory subsystem is disclosed. During a clean-up operation, a sibling chain of the file structures stored in a logical block of the flash memory subsystem is traversed. If a file structure is followed by deleted file structures in the sibling chain, then the file structure is transferred to a spare logical block and the sibling pointer of the file structure is programmed bypass the deleted file structures. If a deleted file structure in the sibling chain is referenced by a previous file structure in the sibling chain, then the deleted file structure is transferred to the logical block and recycled.
174 Citations
33 Claims
-
1. A method of cleaning up a logical block of a flash memory subsystem, the method comprising the steps of:
-
transferring information from block allocation structures and file structures of a first logical block of a flash memory subsystem having a first logical block identifier to corresponding block allocation structures and file structures of a second logical block of the flash memory subsystem having a second logical block identifier, the block allocation structures in each logical block storing physical address offsets for the file structures, the file structures including directory entry structures that specify directories, file entry structures that specify files, and file information structures with corresponding extent blocks that store file data, the directory entry and file entry data structures forming a linked list file structure that defines a file system hierarchy, and the file information structures linking the extent blocks to the file system hierarchy; compressing the file structures into the second logical block by discarding deleted file information structures and extent blocks and modifying the linked list hierarchy to eliminate deleted file entry and directory entry structures; reprogramming the logical block identifier of the second logical block to reflect the logical block identifier of the first logical block; erasing the first logical block; and programming the logical block identifier of the first logical block to reflect a cleaned up status. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. An apparatus for cleaning up a logical block of a flash memory subsystem, the apparatus comprising:
-
means for transferring information from block allocation structures and file structures of a first logical block of a flash memory subsystem having a first logical block identifier to corresponding block allocation structures and file structures of a second logical block of the flash memory subsystem having a second logical block identifier, the block allocation structures in each logical block storing physical address offsets for the file structures, the file structures including directory entry structures that specify directories, file entry structures that specify files, and file information structures with corresponding extent blocks that store file data, the directory entry and file entry data structures forming a linked list file structure that defines a file system hierarchy, and the file information structures linking the extent blocks to the file system hierarchy; means for compressing the file structures into the second logical block by discarding deleted file information structures and extent blocks and modifying the linked list hierarchy to eliminate deleted file entry and directory entry structures; means for reprogramming the logical block identifier of the second logical block to reflect the logical block identifier of the first logical block; means for erasing the first logical block; and means for programming the logical block identifier of the first logical block to reflect a cleaned up status. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A method of cleaning up a logical block of a flash memory subsystem of a computer system, the method comprising the steps of:
-
detecting an idle time of an operating system executing on a central processing unit in a computer system; transferring information from block allocation structures and file structures of a first logical block of a flash memory subsystem of the computer system having a first logical block identifier to corresponding block allocation structures and file structures of a second logical block of the flash memory subsystem of the computer system having a second logical block identifier after the idle time is detected, the block allocation structures in each logical block storing physical address offsets for the file structures, the file structures including directory entry structures that specify directories, file entry structures that specify files, and file information structures with corresponding extent blocks that store file data, the directory entry and file entry data structures forming a linked list file structure that defines a file system hierarchy, and the file information structures linking the extent blocks to the file system hierarchy; compressing the file structures into the second logical block by discarding deleted file information structures and extent blocks and modifying the linked list hierarchy to eliminate deleted file entry and directory entry structures; reprogramming the logical block identifier of the second logical block to reflect the logical block identifier of the first logical block; erasing the first logical block; and programming the logical block identifier of the first logical block to reflect a cleaned up status. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
Specification