Change the object type if it turns out to be wrong during a scan
[yaffs2.git] / yaffs_tagscompat.c
index 3d72be4a3a1b87819ba59b501541c3cfbe03624d..092430beccb7780311d1f148870a83a443fa0164 100644 (file)
@@ -124,7 +124,7 @@ static int yaffs_wr_nand(struct yaffs_dev *dev,
 {
        int data_size = dev->data_bytes_per_chunk;
 
-       return dev->param.drv_write_chunk_fn(dev, nand_chunk,
+       return dev->drv.drv_write_chunk_fn(dev, nand_chunk,
                                data, data_size,
                                (u8 *) spare, sizeof(*spare));
 }
@@ -152,7 +152,7 @@ static int yaffs_rd_chunk_nand(struct yaffs_dev *dev,
        spare_size = sizeof(struct yaffs_spare);
 
        if (dev->param.use_nand_ecc)
-               return dev->param.drv_read_chunk_fn(dev, nand_chunk,
+               return dev->drv.drv_read_chunk_fn(dev, nand_chunk,
                                                data, data_size,
                                                (u8 *) spare, spare_size,
                                                ecc_result);
@@ -160,7 +160,7 @@ static int yaffs_rd_chunk_nand(struct yaffs_dev *dev,
 
        /* Handle the ECC at this level. */
 
-       ret_val = dev->param.drv_read_chunk_fn(dev, nand_chunk,
+       ret_val = dev->drv.drv_read_chunk_fn(dev, nand_chunk,
                                                 data, data_size,
                                                 (u8 *)spare, spare_size,
                                                NULL);
@@ -350,7 +350,8 @@ static int yaffs_tags_compat_query_block(struct yaffs_dev *dev,
 
        *seq_number = 0;
 
-       yaffs_rd_chunk_nand(dev, block_no * dev->param.chunks_per_block + 1,
+       /* Look for bad block markers in the first two chunks */
+       yaffs_rd_chunk_nand(dev, block_no * dev->param.chunks_per_block,
                            NULL, &spare0, &dummy, 0);
        yaffs_rd_chunk_nand(dev, block_no * dev->param.chunks_per_block + 1,
                            NULL, &spare1, &dummy, 0);
@@ -369,12 +370,12 @@ void yaffs_tags_compat_install(struct yaffs_dev *dev)
 {
        if(dev->param.is_yaffs2)
                return;
-       if(!dev->param.write_chunk_tags_fn)
-               dev->param.write_chunk_tags_fn = yaffs_tags_compat_wr;
-       if(!dev->param.read_chunk_tags_fn)
-               dev->param.read_chunk_tags_fn = yaffs_tags_compat_rd;
-       if(!dev->param.query_block_fn)
-               dev->param.query_block_fn = yaffs_tags_compat_query_block;
-       if(!dev->param.mark_bad_fn)
-               dev->param.mark_bad_fn = yaffs_tags_compat_mark_bad;
+       if(!dev->tagger.write_chunk_tags_fn)
+               dev->tagger.write_chunk_tags_fn = yaffs_tags_compat_wr;
+       if(!dev->tagger.read_chunk_tags_fn)
+               dev->tagger.read_chunk_tags_fn = yaffs_tags_compat_rd;
+       if(!dev->tagger.query_block_fn)
+               dev->tagger.query_block_fn = yaffs_tags_compat_query_block;
+       if(!dev->tagger.mark_bad_fn)
+               dev->tagger.mark_bad_fn = yaffs_tags_compat_mark_bad;
 }