Patent ID: 8380689

Claim:
A system for journaling data to be written to a data storage node, comprising: a processor coupled to a memory; persistent memory configured to store journal data; and a journal module configured to store, in the persistent memory: a plurality of transaction descriptors, the plurality of transaction descriptors including a first transaction descriptor and a second transaction descriptor, wherein the first transaction descriptor comprises a link to the second transaction descriptor, wherein the plurality of transaction descriptors are stored such that each transaction descriptor may be removed from the plurality of transaction descriptors in an order that is different than an order in which the transaction descriptor was stored, wherein each of the plurality of transaction descriptors includes information identifying a transaction state of an associated transaction; a plurality of block descriptors, wherein the first transaction descriptor comprises a link to a first block descriptor, the first block descriptor comprises a link to a second block descriptor, the second transaction descriptor comprises a link to a third block descriptor, and the third block descriptor comprises a link to a fourth block descriptor, wherein the plurality of block descriptors are stored such that each block descriptor may be removed from the plurality of block descriptors in an order that is different than an order in which the block descriptor was stored; and a plurality of journal blocks, wherein each journal block of the plurality of journal blocks comprises data to be written to the data storage node; wherein each of the plurality of block descriptors comprises a link to at least one of the plurality of journal blocks and at least one respective address in the data storage node to which the at least one journal block is to be written.