Table journaling in flash storage devices
First Claim
1. A method of table journaling in a flash storage device comprising a volatile memory and a plurality of non-volatile data blocks, the method comprising the steps of:
- creating a first copy, in a first one or more of the plurality of non-volatile data blocks, of an addressing table stored in the volatile memory;
maintaining, for each of the first one or more non-volatile data blocks, a respective indicator in the volatile memory for indicating whether a portion of the addressing table stored in the non-volatile data block has been changed since the portion was last stored in the non-volatile data block;
writing, based on a first schedule, transaction log data to a second one or more of the plurality of non-volatile data blocks, wherein the transaction log data comprises information about data operations performed in at least one of the plurality of non-volatile data blocks different than the second one or more of the plurality of non-volatile data blocks;
in response to the second one or more of the plurality of non-volatile data blocks having been filled with transaction log data, updating one or more portions of the first copy of the addressing table stored in the first one or more of the non-volatile data blocks indicated in the volatile memory as being changed, the updating based on changes made to the addressing table stored in the volatile memory since the one or more portions were last stored in the non-volatile data block; and
writing, to a third one or more of the plurality of non-volatile data blocks based on a second schedule separate from the first schedule, pending operation data from an ordered list indicative of blocks associated with upcoming data operations and not represented in the transaction log data.
9 Assignments
0 Petitions
Accused Products
Abstract
A method of table journaling in a flash storage device comprising a volatile memory and a plurality of non-volatile data blocks is provided. The method comprises the steps of creating a first copy in a first one or more of the plurality of non-volatile data blocks of an addressing table stored in the volatile memory, writing transaction log data to a second one or more of the plurality of non-volatile data blocks, and updating the first copy of the addressing table based on changes to the addressing table stored in the volatile memory after the second one or more of the plurality of non-volatile data blocks have been filled with transaction log data.
-
Citations
19 Claims
-
1. A method of table journaling in a flash storage device comprising a volatile memory and a plurality of non-volatile data blocks, the method comprising the steps of:
-
creating a first copy, in a first one or more of the plurality of non-volatile data blocks, of an addressing table stored in the volatile memory; maintaining, for each of the first one or more non-volatile data blocks, a respective indicator in the volatile memory for indicating whether a portion of the addressing table stored in the non-volatile data block has been changed since the portion was last stored in the non-volatile data block; writing, based on a first schedule, transaction log data to a second one or more of the plurality of non-volatile data blocks, wherein the transaction log data comprises information about data operations performed in at least one of the plurality of non-volatile data blocks different than the second one or more of the plurality of non-volatile data blocks; in response to the second one or more of the plurality of non-volatile data blocks having been filled with transaction log data, updating one or more portions of the first copy of the addressing table stored in the first one or more of the non-volatile data blocks indicated in the volatile memory as being changed, the updating based on changes made to the addressing table stored in the volatile memory since the one or more portions were last stored in the non-volatile data block; and writing, to a third one or more of the plurality of non-volatile data blocks based on a second schedule separate from the first schedule, pending operation data from an ordered list indicative of blocks associated with upcoming data operations and not represented in the transaction log data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A flash storage device comprising:
-
a volatile memory; a plurality of non-volatile data blocks; and a controller configured to; create a first copy, in a first one or more of the plurality of non-volatile data blocks, of an addressing table stored in the volatile memory; maintaining, for each of the first one or more non-volatile data blocks, a respective indicator in the volatile memory for indicating whether a portion of the addressing table stored in the non-volatile data block has been changed since the portion was last stored in the non-volatile data block; write, based on a first schedule, transaction log data to a second one or more of the plurality of non-volatile data blocks, wherein the transaction log data comprises information about data operations performed in at least two of the plurality of non-volatile data blocks different than the second one or more of the plurality of non-volatile data blocks; in response to the second one or more of the plurality of non-volatile data blocks having been filled with transaction log data, update one or more portions of the first copy of the addressing table stored in the first one or more of the non-volatile data blocks indicated in the volatile memory as being changed, the updating based on changes made to the addressing table stored in the volatile memory since the one or more portions were last stored in the non-volatile data block; and write, to a third one or more of the plurality of non-volatile data blocks based on a second schedule separate from the first schedule, pending operation data from an ordered list indicative of blocks associated with upcoming data operations and not represented in the transaction log data. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A non-transitory machine-readable medium comprising instructions stored therein for table journaling in a flash storage device having a volatile memory and plurality of non-volatile data blocks, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
-
creating a first copy, in a first one or more of the plurality of non-volatile data blocks, of an addressing table stored in the volatile memory; maintaining, for each of the first one or more non-volatile data blocks, a respective indicator in the volatile memory for indicating whether a portion of the addressing table stored in the non-volatile data block has been changed since the portion was last stored in the non-volatile data block; writing, based on a first schedule, transaction log data to a second one or more of the plurality of non-volatile data blocks, wherein the transaction log data comprises information about data operations performed in at least two of the plurality of non-volatile data blocks different than the second one or more of the plurality of non-volatile data blocks; in response to the second one or more of the plurality of non-volatile data blocks having been filled with transaction log data, updating one or more portions of the first copy of the addressing table stored in the first one or more of the non-volatile data blocks indicated in the volatile memory as being changed, the updating based on changes made to the addressing table stored in the volatile memory since the one or more portions were last stored in the non-volatile data block; and writing, to a third one or more of the plurality of non-volatile data blocks and based on a second schedule separate from the first schedule, pending operation data from an ordered list indicative of blocks associated with upcoming data operations and not represented in the transaction log data.
-
Specification