Method and system for open NAND block detection and correction in an open-channel SSD
One embodiment provides a system which facilitates data management. The system allocates a superblock of a storage device, wherein the superblock is in an open state. The system writes data to the superblock. The system monitors, by a controller of the storage device, an amount of time that the superblock remains in the open state. Responsive to detecting a failure associated with a flash translation layer (FTL) module, the system determines that the monitored amount of time exceeds a predetermined threshold, and seals, by the controller, the superblock by writing directly to a respective free page in the superblock while bypassing one or more data-processing modules.
1. A computer-implemented method, comprising:
allocating a superblock of a storage device, wherein the superblock is in an open state;
writing data to the superblock;
monitoring, by a controller of the storage device, an amount of time that the superblock remains in the open state; and
responsive to detecting a failure associated with a flash translation layer (FTL) module:
determining that the monitored amount of time exceeds a predetermined threshold; and
sealing, by the controller, the superblock by writing directly to a respective free page in the superblock while bypassing one or more data-processing modules.
2. The method of claim 1 , wherein sealing, by the controller, the superblock further comprises:
generating, for the respective free page, a pseudo-random number sequence and a first logical block address (LBA);
writing the pseudo-random number sequence to the respective free page in the superblock;
writing the first LBA to an end of the respective free page, wherein the first LBA indicates that the respective free page includes the pseudo-random number sequence;
writing the first LBA in a log of the superblock, wherein the log comprises LBAs associated with the superblock; and
setting the superblock to a sealed state,
wherein the pseudo-random number sequence and the first LBA are written directly to the respective free page while bypassing the one or more data-processing modules.
3. The method of claim 1 , wherein the data-processing modules include one or more of:
a cyclic redundancy check (CRC) module;
a data-protecting module;
a redundant array of independent disks (RAID)-encoding module;
an error correction code (ECC)-encoding module; and
a data-modulating module.
4. The method of claim 1 ,
wherein the controller comprises a firmware component, which includes an operator component, a number generator, a watcher component, and a command component,
wherein monitoring the amount of time that the superblock remains in the open state is performed by the watcher component, and
wherein determining that the monitored amount of time exceeds the predetermined threshold is performed by the command component.
5. The method of claim 4 , wherein responsive to the command component determining that the monitored amount of time exceeds the predetermined threshold, the method further comprises:
sending, by the command component to the operator component, a first command to seal the superblock;
sending, by the operator component in response to the first command, a second command for the number generator component; and
generating, by the number generator in response to the second command, the pseudo-random number sequence for the respective free page in the superblock.
6. The method of claim 1 , wherein responsive to detecting no failure associated with the FTL module, the method further comprises:
determining, by the FTL module, a condition which triggers sealing the superblock;
generating, for the respective free page in the superblock, dummy data and a first LBA;
writing the dummy data to the respective free page;
writing the first LBA to an end of the respective free page, wherein the first LBA indicates that the respective free page includes the dummy data;
writing the first LBA in a log of the superblock, wherein the log comprises LBAs associated with the superblock; and
setting the superblock to a sealed state,
wherein the dummy data and the first LBA are written directly to the respective free page while bypassing the one or more data-processing modules.
7. The method of claim 1 ,
wherein allocating the superblock is performed by the FTL module, and
wherein the FTL module is associated with a host or an entity which is distinct from the storage device.
8. The method of claim 7 ,
wherein the superblock is allocated in response to a first incoming write request, and
wherein the data written to the superblock is associated with the first incoming write request.
9. The method of claim 8 , further comprising:
responsive to processing a second incoming write request and determining that the superblock is full, allocating, by the FTL module, another superblock of the storage device to which to write data associated with the second incoming write request.
10. A computer system, comprising:
a processor; and
a memory coupled to the processor and storing instructions which, when executed by the processor, cause the processor to perform a method, the method comprising:
allocating a superblock of a storage device, wherein the superblock is in an open state;
writing data to the superblock;
monitoring, by a controller of the storage device, an amount of time that the superblock remains in the open state; and
responsive to detecting a failure associated with a flash translation layer (FTL) module:
determining that the monitored amount of time exceeds a predetermined threshold; and
sealing, by the controller, the superblock by writing directly to a respective free page in the superblock while bypassing one or more data-processing modules.
11. The computer system of claim 10 , wherein sealing, by the controller, the superblock further comprises:
generating, for the respective free page, a pseudo-random number sequence and a first logical block address (LBA);
writing the pseudo-random number sequence to the respective free page in the superblock;
writing the first LBA to an end of the respective free page, wherein the first LBA indicates that the respective free page includes the pseudo-random number sequence;
writing the first LBA in a log of the superblock, wherein the log comprises LBAs associated with the superblock; and
setting the superblock to a sealed state,
wherein the pseudo-random number sequence and the first LBA are written directly to the respective free page while bypassing the one or more data-processing modules.
12. The computer system of claim 10 , wherein the data-processing modules include one or more of:
a cyclic redundancy check (CRC) module;
a data-protecting module;
a redundant array of independent disks (RAID)-encoding module;
an error correction code (ECC)-encoding module; and
a data-modulating module.
13. The computer system of claim 10 ,
wherein the controller comprises a firmware component, which includes an operator component, a number generator, a watcher component, and a command component,
wherein monitoring the amount of time that the superblock remains in the open state is performed by the watcher component, and
wherein determining that the monitored amount of time exceeds the predetermined threshold is performed by the command component.
14. The computer system of claim 13 , wherein responsive to the command component determining that the monitored amount of time exceeds the predetermined threshold, the method further comprises:
sending, by the command component to the operator component, a first command to seal the superblock;
sending, by the operator component in response to the first command, a second command for the number generator component; and
generating, by the number generator in response to the second command, the pseudo-random number sequence for the respective free page in the superblock.
15. The computer system of claim 10 , wherein responsive to detecting no failure associated with the FTL module, the method further comprises:
determining, by the FTL module, a condition which triggers sealing the superblock;
generating, for the respective free page in the superblock, dummy data and a first LBA;
writing the dummy data to the respective free page;
writing the first LBA to an end of the respective free page, wherein the first LBA indicates that the respective free page includes the dummy data;
writing the first LBA in a log of the superblock, wherein the log comprises LBAs associated with the superblock; and
setting the superblock to a sealed state,
wherein the dummy data and the first LBA are written directly to the respective free page while bypassing the one or more data-processing modules.
16. The computer system of claim 10 ,
wherein allocating the superblock is performed by the FTL module, and
wherein the FTL module is associated with a host or an entity which is distinct from the storage device.
17. The computer system of claim 16 ,
wherein the superblock is allocated in response to a first incoming write request, and
wherein the data written to the superblock is associated with the first incoming write request.
18. The computer system of claim 17 , wherein the method further comprises:
responsive to processing a second incoming write request and determining that the superblock is full, allocating, by the FTL module, another superblock of the storage device to which to write data associated with the second incoming write request.
19. An apparatus, comprising:
a block-allocating module configured to allocate a superblock of a storage device, wherein the superblock is in an open state;
a data-writing module configured to write data to the superblock;
a block-monitoring module configured to monitor an amount of time that the superblock remains in the open state;
an FTL failure-detecting module configured to detect a failure associated with a flash translation layer (FTL) module,
wherein responsive to the FTL failure-detecting module detecting a failure associated with a flash translation layer (FTL) module, the block-monitoring module is configured to determine that the monitored amount of time exceeds a predetermined threshold; and
a block-sealing module configured to seal the superblock by writing directly to a respective free page in the superblock while bypassing one or more data-processing modules.
20. The apparatus of claim 19 , further comprising:
a pseudo-random number sequence-generating module configured to generate, for the respective free page, a pseudo-random number sequence;
an LBA-managing module configured to generate, for the respective page, a first logical block address (LBA),
wherein the data-writing module is further configured to write the pseudo-random number sequence to the respective free page in the superblock and to write the first LBA to an end of the respective free page, and
wherein the first LBA indicates that the respective free page includes the pseudo-random number sequence; and
an LBA-managing module configured to write the first LBA in a log of the superblock, wherein the log comprises LBAs associated with the superblock,
wherein the block-monitoring module is further configured to set the superblock to a sealed state,
wherein the pseudo-random number sequence and the first LBA are written directly to the respective free page while bypassing the one or more data-processing modules.