if (dev->param.
erase_fn(dev,
- i - dev->block_offset /* realign */ )) {
+ i - dev->block_offset /* realign */)) {
bi->block_state = YAFFS_BLOCK_STATE_EMPTY;
dev->n_erased_blocks++;
dev->n_free_chunks +=
{
int i;
int blocks_avail = dev->n_erased_blocks - dev->param.n_reserved_blocks;
+
yaffs_trace(YAFFS_TRACE_CHECKPOINT,
"allocating checkpt block: erased %d reserved %d avail %d next %d ",
dev->n_erased_blocks, dev->param.n_reserved_blocks,
int yaffs2_checkpt_open(struct yaffs_dev *dev, int writing)
{
-
dev->checkpt_open_write = writing;
/* Got the functions we need? */
int i;
/* Set to a value that will kick off a read */
dev->checkpt_byte_offs = dev->data_bytes_per_chunk;
- /* A checkpoint block list of 1 checkpoint block per 16 block is (hopefully)
- * going to be way more than we need */
+ /* A checkpoint block list of 1 checkpoint block per 16 block is
+ * (hopefully) going to be way more than we need */
dev->blocks_in_checkpt = 0;
dev->checkpt_max_blocks =
(dev->internal_end_block - dev->internal_start_block) / 16 +
int yaffs2_get_checkpt_sum(struct yaffs_dev *dev, u32 * sum)
{
u32 composite_sum;
+
composite_sum = (dev->checkpt_sum << 8) | (dev->checkpt_xor & 0xFF);
*sum = composite_sum;
return 1;
{
int chunk;
int realigned_chunk;
-
struct yaffs_ext_tags tags;
if (dev->checkpt_cur_block < 0) {
{
int i = 0;
int ok = 1;
-
u8 *data_bytes = (u8 *) data;
if (!dev->checkpt_buffer)
int i = 0;
int ok = 1;
struct yaffs_ext_tags tags;
-
int chunk;
int realigned_chunk;
-
u8 *data_bytes = (u8 *) data;
if (!dev->checkpt_buffer)
/* read in the next chunk */
dev->param.read_chunk_tags_fn(dev,
- realigned_chunk,
- dev->
- checkpt_buffer,
- &tags);
+ realigned_chunk,
+ dev->checkpt_buffer,
+ &tags);
if (tags.chunk_id != (dev->checkpt_page_seq + 1)
|| tags.ecc_result > YAFFS_ECC_RESULT_FIXED
int yaffs_checkpt_close(struct yaffs_dev *dev)
{
-
if (dev->checkpt_open_write) {
if (dev->checkpt_byte_offs != 0)
yaffs2_checkpt_flush_buffer(dev);
bi = yaffs_get_block_info(dev, blk);
if (bi && bi->block_state == YAFFS_BLOCK_STATE_EMPTY)
bi->block_state = YAFFS_BLOCK_STATE_CHECKPOINT;
- else {
- /* Todo this looks odd... */
- }
}
kfree(dev->checkpt_block_list);
dev->checkpt_block_list = NULL;
dev->blocks_in_checkpt * dev->param.chunks_per_block;
dev->n_erased_blocks -= dev->blocks_in_checkpt;
- yaffs_trace(YAFFS_TRACE_CHECKPOINT,"checkpoint byte count %d",
+ yaffs_trace(YAFFS_TRACE_CHECKPOINT, "checkpoint byte count %d",
dev->checkpt_byte_count);
if (dev->checkpt_buffer) {
return 1;
} else {
return 0;
- }
+ }
}
int yaffs2_checkpt_invalidate_stream(struct yaffs_dev *dev)