Recovery Point Generation This module implements a recovery point algorithm.
Stable Storage This module provides an API for accessing the stable storage, i.e.,
reading and writing recovery points, but also administrative tasks such as clearing
and initializing stable storage, get the list of stored recovery points, etc. Usually, the
recovery points are initialized at system boot up, not by clearing the stable storage,
but by finding the last used recovery point and continuing with the next sequence
number. In the state variable of the first recovery point, a flag is set to mark this
recovery point as the first after boot up, so that the recovery process can recognize
this recovery point as the first valid one.
SSReplication This layer partly implements the error detection and correction
algorithms. In detail, the module is responsible for computing the CRC-32 for each
block. The CRC-32 is automatically generated during write operations and automatically checked during read operations. All read/write operations are performed
concurrently on two distinct flash chips.
At each read operation, data integrity is checked automatically. If a faulty
CRC-32 is detected, the healthy copy is used to fix the data by merely rewriting the
faulty block and an error indication is returned. If one of the flash chips fails
permanently, the system still continues to record data on the health card, and a log
message plus an appropriate status code are generated to indicate the failure.
SSVolumes This module implements a disk volume object that represents a logical
volume, in our case the whole flash chip, and extends its functionality with the
ability of erasing erase units on the flash disk. In case of a malfunctioning flash
chip, both the controller and the chip are automatically reset and the failed operation
is retried.
If it fails again, an error code is returned to indicate the failure. The abstraction
as a volume allows to transparently replace the flash chips with another device.
Flash Interface/Flash Driver These two modules implement the ONFI flash
standard, an interface for reading, writing, and erasing blocks, and some administrative support such as reading chip information, etc. For ease of implementation,
the block-abstracted mode of ONFI [60] is used.
To summarize, this simple implementation of a possible stable storage mechanism optimally deals with the limitations of current flash cards and provides reliable
and fast data access.
8.8 Summary
• We revised existing methods of system preparation for recovery;
• These methods can be considered pursuing two distinct approaches: forward
error recovery and backward error recovery.
• The first approach resets software to a clearly defined state in the future.
136
8 Recovery Preparation
Stable Storage This module provides an API for accessing the stable storage, i.e.,
reading and writing recovery points, but also administrative tasks such as clearing
and initializing stable storage, get the list of stored recovery points, etc. Usually, the
recovery points are initialized at system boot up, not by clearing the stable storage,
but by finding the last used recovery point and continuing with the next sequence
number. In the state variable of the first recovery point, a flag is set to mark this
recovery point as the first after boot up, so that the recovery process can recognize
this recovery point as the first valid one.
SSReplication This layer partly implements the error detection and correction
algorithms. In detail, the module is responsible for computing the CRC-32 for each
block. The CRC-32 is automatically generated during write operations and automatically checked during read operations. All read/write operations are performed
concurrently on two distinct flash chips.
At each read operation, data integrity is checked automatically. If a faulty
CRC-32 is detected, the healthy copy is used to fix the data by merely rewriting the
faulty block and an error indication is returned. If one of the flash chips fails
permanently, the system still continues to record data on the health card, and a log
message plus an appropriate status code are generated to indicate the failure.
SSVolumes This module implements a disk volume object that represents a logical
volume, in our case the whole flash chip, and extends its functionality with the
ability of erasing erase units on the flash disk. In case of a malfunctioning flash
chip, both the controller and the chip are automatically reset and the failed operation
is retried.
If it fails again, an error code is returned to indicate the failure. The abstraction
as a volume allows to transparently replace the flash chips with another device.
Flash Interface/Flash Driver These two modules implement the ONFI flash
standard, an interface for reading, writing, and erasing blocks, and some administrative support such as reading chip information, etc. For ease of implementation,
the block-abstracted mode of ONFI [60] is used.
To summarize, this simple implementation of a possible stable storage mechanism optimally deals with the limitations of current flash cards and provides reliable
and fast data access.
8.8 Summary
• We revised existing methods of system preparation for recovery;
• These methods can be considered pursuing two distinct approaches: forward
error recovery and backward error recovery.
• The first approach resets software to a clearly defined state in the future.
136
8 Recovery Preparation
