Patent ID: 8819337

Claim:
A method for determining whether to back-up a previously-written lower page of data before writing an upper page of data, the method comprising: performing the following in a controller of a storage module having a memory with a plurality of memory cells: receiving a command to write an upper page of data to memory cells that have already been written with a lower page of data; comparing a location of a next write pointer with a location of a flush pointer on a snapshot of a data structure that was taken after a flush cache command was performed, wherein the data structure contains a list of blocks in the memory and a list of pointers to specific pages within these blocks where there is open space; determining whether a location of the lower page of data is prior to the location of the flush pointer based on the comparison of the location of next write pointer with the location of the flush pointer, wherein the location of the lower page of data is determined based on an offset from the location of the next write pointer; backing-up the lower page of data in another area of the memory before writing the upper page of data only if it is determined that the location of the lower page of data is prior to the location of the flush pointer; and writing the upper page of data to the memory cells; wherein the memory comprises a silicon substrate, and wherein the plurality of memory cells form at least two memory layers vertically disposed with respect to each other to form a monolithic three-dimensional structure, wherein at least one memory layer is vertically disposed with respect to the silicon substrate.