CPC G06F 11/2087 (2013.01) [G06F 3/0619 (2013.01); G06F 3/064 (2013.01); G06F 3/065 (2013.01); G06F 3/0659 (2013.01); G06F 3/0679 (2013.01); G06F 2201/85 (2013.01)] | 16 Claims |
1. A method, comprising:
issuing a first cache program operation from a storage controller to a non-volatile storage device to write data to a first regular block of the non-volatile storage device;
receiving the data into a cache buffer of the non-volatile storage device from the storage controller;
transferring the data from the cache buffer into a data buffer of the non-volatile storage device;
upon completion of transferring the data from the cache buffer into the data buffer, acknowledging the storage controller;
writing the data from the data buffer to the first regular block, wherein storage cells in the first regular block are multi-bit cells;
writing the data from the data buffer to a backup block of the non-volatile storage device, as a copy of the data, wherein storage cells in the backup block are single-bit cells;
determining that a program error has occurred in writing the data to the first regular block;
asserting the program error to the storage controller;
retrieving, by the storage controller, a mapping between the first regular block and the backup block from a mapping table;
issuing a read operation from the storage controller to the non-volatile storage device to read the copy of the data from the backup block;
reading the copy of the data from the backup block and sending the copy of the data to the storage controller; and
issuing a second cache program operation from the storage controller to the non-volatile storage device to write the data to a second regular block of the non-volatile storage device, wherein storage cells in the second regular block are multi-bit cells, and
marking the first regular block as defective;
wherein the mapping table contains four (4) backup blocks repeatedly mapped to regular blocks in a plane in a round robin manner.
|