X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_yaffs1.c;h=0cdc8c80c108017ef351b8b51d29fd922b6d3480;hp=da6a40ff96f26ff8def4e0dfd7f2525966d4c7c5;hb=b4d5215f18486403d16f2e776000e43eba052f40;hpb=d7388fb75a13610d14d0afc397f826bd44c972e1 diff --git a/yaffs_yaffs1.c b/yaffs_yaffs1.c index da6a40f..0cdc8c8 100644 --- a/yaffs_yaffs1.c +++ b/yaffs_yaffs1.c @@ -22,10 +22,10 @@ int yaffs1_scan(struct yaffs_dev *dev) { struct yaffs_ext_tags tags; - int blk; + u32 blk; int result; int chunk; - int c; + u32 c; int deleted; enum yaffs_block_state state; LIST_HEAD(hard_list); @@ -98,6 +98,8 @@ int yaffs1_scan(struct yaffs_dev *dev) result = yaffs_rd_chunk_tags_nand(dev, chunk, NULL, &tags); + if (result != YAFFS_OK) + continue; /* Let's have a good look at this chunk... */ if (tags.ecc_result == YAFFS_ECC_RESULT_UNFIXED || @@ -162,15 +164,15 @@ int yaffs1_scan(struct yaffs_dev *dev) if (in && in->variant_type == YAFFS_OBJECT_TYPE_FILE && - in->variant.file_variant.scanned_size < + in->variant.file_variant.stored_size < endpos) { - in->variant.file_variant.scanned_size = + in->variant.file_variant.stored_size = endpos; if (!dev->param.use_header_file_size) { in->variant. file_variant.file_size = in->variant. - file_variant.scanned_size; + file_variant.stored_size; } } @@ -323,11 +325,9 @@ int yaffs1_scan(struct yaffs_dev *dev) case YAFFS_OBJECT_TYPE_FILE: if (dev->param. use_header_file_size) - in->variant. - file_variant.file_size - = oh->file_size; - + file_variant.file_size + = yaffs_oh_to_size(dev, oh, 0); break; case YAFFS_OBJECT_TYPE_HARDLINK: in->variant.