struct yaffs_checkpt_chunk_hdr {
int version;
- int seq;
+ u32 seq;
u32 sum;
u32 xor;
} ;
static int yaffs_checkpt_erase(struct yaffs_dev *dev)
{
- int i;
+ u32 i;
if (!dev->drv.drv_erase_fn)
return 0;
static void yaffs2_checkpt_find_erased_block(struct yaffs_dev *dev)
{
- int i;
+ u32 i;
int blocks_avail = dev->n_erased_blocks - dev->param.n_reserved_blocks;
yaffs_trace(YAFFS_TRACE_CHECKPOINT,
dev->n_erased_blocks, dev->param.n_reserved_blocks,
blocks_avail, dev->checkpt_next_block);
- if (dev->checkpt_next_block >= 0 &&
+ if (dev->checkpt_next_block >= dev->internal_start_block &&
dev->checkpt_next_block <= dev->internal_end_block &&
blocks_avail > 0) {
}
yaffs_trace(YAFFS_TRACE_CHECKPOINT, "out of checkpt blocks");
- dev->checkpt_next_block = -1;
- dev->checkpt_cur_block = -1;
+ dev->checkpt_next_block = 0;
+ dev->checkpt_cur_block = 0;
}
static void yaffs2_checkpt_find_block(struct yaffs_dev *dev)
{
- int i;
+ u32 i;
struct yaffs_ext_tags tags;
yaffs_trace(YAFFS_TRACE_CHECKPOINT,
if (dev->blocks_in_checkpt < dev->checkpt_max_blocks)
for (i = dev->checkpt_next_block; i <= dev->internal_end_block;
i++) {
- int chunk = i * dev->param.chunks_per_block;
+ u32 chunk = i * dev->param.chunks_per_block;
enum yaffs_block_state state;
u32 seq;
yaffs_trace(YAFFS_TRACE_CHECKPOINT, "found no more checkpt blocks");
- dev->checkpt_next_block = -1;
- dev->checkpt_cur_block = -1;
+ dev->checkpt_next_block = 0;
+ dev->checkpt_cur_block = 0;
}
int yaffs2_checkpt_open(struct yaffs_dev *dev, int writing)
dev->checkpt_byte_count = 0;
dev->checkpt_sum = 0;
dev->checkpt_xor = 0;
- dev->checkpt_cur_block = -1;
- dev->checkpt_cur_chunk = -1;
+ dev->checkpt_cur_block = 0;
+ dev->checkpt_cur_chunk = 0;
dev->checkpt_next_block = dev->internal_start_block;
if (writing) {
int offset_chunk;
struct yaffs_ext_tags tags;
- if (dev->checkpt_cur_block < 0) {
+ if (dev->checkpt_cur_block < dev->internal_start_block) {
yaffs2_checkpt_find_erased_block(dev);
dev->checkpt_cur_chunk = 0;
}
- if (dev->checkpt_cur_block < 0)
+ if (dev->checkpt_cur_block < dev->internal_start_block)
return 0;
tags.is_deleted = 0;
dev->checkpt_cur_chunk++;
if (dev->checkpt_cur_chunk >= dev->param.chunks_per_block) {
dev->checkpt_cur_chunk = 0;
- dev->checkpt_cur_block = -1;
+ dev->checkpt_cur_block = 0;
}
memset(dev->checkpt_buffer, 0, dev->data_bytes_per_chunk);
data_bytes++;
dev->checkpt_byte_count++;
- if (dev->checkpt_byte_offs < 0 ||
- dev->checkpt_byte_offs >= dev->data_bytes_per_chunk)
+ if (dev->checkpt_byte_offs >= dev->data_bytes_per_chunk)
ok = yaffs2_checkpt_flush_buffer(dev);
}
while (i < n_bytes && ok) {
- if (dev->checkpt_byte_offs < 0 ||
- dev->checkpt_byte_offs >= dev->data_bytes_per_chunk) {
+ if (dev->checkpt_byte_offs >= dev->data_bytes_per_chunk) {
- if (dev->checkpt_cur_block < 0) {
+ if (dev->checkpt_cur_block <
+ dev->internal_start_block) {
yaffs2_checkpt_find_block(dev);
dev->checkpt_cur_chunk = 0;
}
- if (dev->checkpt_cur_block < 0) {
+ if (dev->checkpt_cur_block <
+ dev->internal_start_block) {
ok = 0;
break;
}
dev->checkpt_page_seq++;
dev->checkpt_cur_chunk++;
- if (dev->checkpt_cur_chunk >=
+ if (dev->checkpt_cur_chunk >
dev->param.chunks_per_block)
- dev->checkpt_cur_block = -1;
+ dev->checkpt_cur_block = 0;
}
} else if (dev->checkpt_block_list) {
for (i = 0;
i < dev->blocks_in_checkpt &&
- dev->checkpt_block_list[i] >= 0; i++) {
- int blk = dev->checkpt_block_list[i];
+ dev->checkpt_block_list[i] > 0; i++) {
+ u32 blk = dev->checkpt_block_list[i];
struct yaffs_block_info *bi = NULL;
if (dev->internal_start_block <= blk &&