X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_yaffs1.c;h=1dd4db937fccf20ed437f50af38b7bf0f6ba1b90;hp=3b271c907d85e29d29c98d14fdaabfdd892d77a8;hb=2403de669c3c3deeb5efbadec2990c1f757e8281;hpb=472c70456396a6f2019bfabe83bd292782dbd978 diff --git a/yaffs_yaffs1.c b/yaffs_yaffs1.c index 3b271c9..1dd4db9 100644 --- a/yaffs_yaffs1.c +++ b/yaffs_yaffs1.c @@ -1,8 +1,7 @@ /* * YAFFS: Yet Another Flash File System. A NAND-flash specific file system. * - * Copyright (C) 2002-2011 Aleph One Ltd. - * for Toby Churchill Ltd and Brightstar Engineering + * Copyright (C) 2002-2018 Aleph One Ltd. * * Created by Charles Manning * @@ -22,10 +21,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); @@ -42,7 +41,7 @@ int yaffs1_scan(struct yaffs_dev *dev) "yaffs1_scan starts intstartblk %d intendblk %d...", dev->internal_start_block, dev->internal_end_block); - chunk_data = yaffs_get_temp_buffer(dev, __LINE__); + chunk_data = yaffs_get_temp_buffer(dev); dev->seq_number = YAFFS_LOWEST_SEQUENCE_NUMBER; @@ -98,6 +97,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 +163,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 +324,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. @@ -413,7 +412,7 @@ int yaffs1_scan(struct yaffs_dev *dev) } } - yaffs_release_temp_buffer(dev, chunk_data, __LINE__); + yaffs_release_temp_buffer(dev, chunk_data); if (alloc_failed) return YAFFS_FAIL;