/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
- * Copyright (C) 2002-2010 Aleph One Ltd.
+ * Copyright (C) 2002-2011 Aleph One Ltd.
* for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
#include "yaffs_flashif2.h"
#include "yaffs_guts.h"
-#include "devextras.h"
+#include "yaffs_fileem2k.h"
+#include "yaffs_packedtags2.h"
+
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
-#include "yaffs_fileem2k.h"
-#include "yaffs_packedtags2.h"
-
#define REPORT_ERROR 0
extern int random_seed;
extern int simulate_power_failure;
-static int initialised = 0;
static int remaining_ops;
static int nops_so_far;
int nRead;
int error;
- T(YAFFS_TRACE_MTD,(TSTR("write chunk %d data %x tags %x" TENDSTR),nand_chunk,(unsigned)data, (unsigned)tags));
+ yaffs_trace(YAFFS_TRACE_MTD, "write chunk %d data %p tags %p",nand_chunk, data, tags);
CheckInit();
if(dev->param.inband_tags){
- yaffs_packed_tags2_tags_only * pt2tp;
- pt2tp = (yaffs_packed_tags2_tags_only *)&data[dev->data_bytes_per_chunk];
+ struct yaffs_packed_tags2_tags_only * pt2tp;
+ pt2tp = (struct yaffs_packed_tags2_tags_only *)&data[dev->data_bytes_per_chunk];
yaffs_pack_tags2_tags_only(pt2tp,tags);
pos = (nand_chunk % (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE)) * PAGE_SIZE;
}
else
{
- yaffs_packed_tags2 pt;
+ struct yaffs_packed_tags2 pt;
yaffs_pack_tags2(&pt,tags, !dev->param.no_tags_ecc);
u8 * ptab = (u8 *)&pt;
}
else
{
- yaffs_packed_tags2 pt;
+ struct yaffs_packed_tags2 pt;
yaffs_pack_tags2(&pt,tags,!dev->param.no_tags_ecc);
u8 * ptab = (u8 *)&pt;
int retval = YAFFS_OK;
int nRead;
- T(YAFFS_TRACE_MTD,(TSTR("read chunk %d data %x tags %x" TENDSTR),nand_chunk,(unsigned)data, (unsigned)tags));
+ yaffs_trace(YAFFS_TRACE_MTD,"read chunk %d data %p tags %p",nand_chunk, data, tags);
CheckInit();
/* Got to suck the tags out of the data area */
if(!data) {
localData=1;
- data = yaffs_get_temp_buffer(dev,__LINE__);
+ data = yaffs_get_temp_buffer(dev);
}
- yaffs_packed_tags2_tags_only * pt2tp;
- pt2tp = (yaffs_packed_tags2_tags_only *)&data[dev->data_bytes_per_chunk];
+ struct yaffs_packed_tags2_tags_only * pt2tp;
+ pt2tp = (struct yaffs_packed_tags2_tags_only *)&data[dev->data_bytes_per_chunk];
pos = (nand_chunk % (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE)) * PAGE_SIZE;
retval = YAFFS_FAIL;
if(localData)
- yaffs_release_temp_buffer(dev,data,__LINE__);
+ yaffs_release_temp_buffer(dev, data);
nread= read(h,tags,sizeof(struct yaffs_ext_tags));
if(nread != sizeof(struct yaffs_ext_tags))
retval = YAFFS_FAIL;
- if(yaffs_check_all_ff((u8 *)tags,sizeof(struct yaffs_ext_tags)))
- {
- yaffs_init_tags(tags);
- }
+ if(yaffs_check_all_ff((u8 *)tags, sizeof(struct yaffs_ext_tags)))
+ memset(tags, 0, sizeof(struct yaffs_ext_tags));
else
- {
tags->chunk_used = 1;
- }
}
else
{
- yaffs_packed_tags2 pt;
+ struct yaffs_packed_tags2 pt;
nread= read(h,&pt,sizeof(pt));
yaffs_unpack_tags2(tags,&pt, !dev->param.no_tags_ecc);
#ifdef SIMULATE_FAILURES
int written;
int h;
- yaffs_packed_tags2 pt;
+ struct yaffs_packed_tags2 pt;
CheckInit();
CheckInit();
- printf("erase block %d\n",blockNumber);
+ //printf("erase block %d\n",blockNumber);
if(blockNumber == 320)
fail320 = 1;
if(blockNumber < 0 || blockNumber >= filedisk.nBlocks)
{
- T(YAFFS_TRACE_ALWAYS,("Attempt to erase non-existant block %d\n",blockNumber));
+ yaffs_trace(YAFFS_TRACE_ALWAYS,"Attempt to erase non-existant block %d",blockNumber);
return YAFFS_FAIL;
}
else
}
else if(tags.chunk_used)
{
- *state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
+ *state = YAFFS_BLOCK_STATE_NEEDS_SCAN;
*seq_number = tags.seq_number;
}
return YAFFS_OK;