projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
yaffs Handle ENOSPC properly during object creation
[yaffs2.git]
/
direct
/
basic-test
/
yaffs_fileem2k.c
diff --git
a/direct/basic-test/yaffs_fileem2k.c
b/direct/basic-test/yaffs_fileem2k.c
index ad76c0179254a7b83604a57e6f5cb575e34b2a8f..33c1da03e552148774f53f59c417a109d7697d47 100644
(file)
--- a/
direct/basic-test/yaffs_fileem2k.c
+++ b/
direct/basic-test/yaffs_fileem2k.c
@@
-1,7
+1,7
@@
/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
- * Copyright (C) 2002-201
0
Aleph One Ltd.
+ * Copyright (C) 2002-201
1
Aleph One Ltd.
* for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
* for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
@@
-24,23
+24,23
@@
const char *yaffs_flashif2_c_version = "$Id: yaffs_fileem2k.c,v 1.24 2010-02-18
#include "yaffs_flashif2.h"
#include "yaffs_guts.h"
#include "yaffs_flashif2.h"
#include "yaffs_guts.h"
-#include "devextras.h"
+#include "yaffs_fileem2k.h"
+#include "yaffs_packedtags2.h"
+#include "yaffs_tagsvalidity.h"
+
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.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
typedef struct
{
#define REPORT_ERROR 0
typedef struct
{
-
__
u8 data[PAGE_SIZE]; // Data + spare
+ u8 data[PAGE_SIZE]; // Data + spare
} yflash_Page;
typedef struct
} yflash_Page;
typedef struct
@@
-66,7
+66,6
@@
int yaffs_test_partial_write = 0;
extern int random_seed;
extern int simulate_power_failure;
extern int random_seed;
extern int simulate_power_failure;
-static int initialised = 0;
static int remaining_ops;
static int nops_so_far;
static int remaining_ops;
static int nops_so_far;
@@
-93,7
+92,7
@@
static void yflash2_MaybePowerFail(unsigned int nand_chunk, int failPoint)
-static
__
u8 localBuffer[PAGE_SIZE];
+static u8 localBuffer[PAGE_SIZE];
static char *NToName(char *buf,int n)
{
static char *NToName(char *buf,int n)
{
@@
-171,7
+170,7
@@
int yflash2_GetNumberOfBlocks(void)
return filedisk.nBlocks;
}
return filedisk.nBlocks;
}
-int yflash2_WriteChunkWithTagsToNAND(
yaffs_dev_t *dev,int nand_chunk,const __u8 *data, cons
t yaffs_ext_tags *tags)
+int yflash2_WriteChunkWithTagsToNAND(
struct yaffs_dev *dev,int nand_chunk,const u8 *data, const struc
t yaffs_ext_tags *tags)
{
int written;
int pos;
{
int written;
int pos;
@@
-180,16
+179,16
@@
int yflash2_WriteChunkWithTagsToNAND(yaffs_dev_t *dev,int nand_chunk,const __u8
int nRead;
int error;
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){
CheckInit();
if(dev->param.inband_tags){
-
yaffs_PackedTags2TagsPart
* pt2tp;
- pt2tp = (
yaffs_PackedTags2TagsPart
*)&data[dev->data_bytes_per_chunk];
- yaffs_
PackTags2TagsPart
(pt2tp,tags);
+
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;
h = filedisk.handle[(nand_chunk / (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE))];
pos = (nand_chunk % (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE)) * PAGE_SIZE;
h = filedisk.handle[(nand_chunk / (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE))];
@@
-255,14
+254,14
@@
int yflash2_WriteChunkWithTagsToNAND(yaffs_dev_t *dev,int nand_chunk,const __u8
if( 0 && dev->param.is_yaffs2)
{
if( 0 && dev->param.is_yaffs2)
{
- written = write(h,tags,sizeof(yaffs_ext_tags));
- if(written != sizeof(yaffs_ext_tags)) return YAFFS_FAIL;
+ written = write(h,tags,sizeof(
struct
yaffs_ext_tags));
+ if(written != sizeof(
struct
yaffs_ext_tags)) return YAFFS_FAIL;
}
else
{
}
else
{
-
yaffs_PackedT
ags2 pt;
- yaffs_
PackT
ags2(&pt,tags, !dev->param.no_tags_ecc);
-
__u8 * ptab = (__
u8 *)&pt;
+
struct yaffs_packed_t
ags2 pt;
+ yaffs_
pack_t
ags2(&pt,tags, !dev->param.no_tags_ecc);
+
u8 * ptab = (
u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
nRead = read(h,localBuffer,sizeof(pt));
for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
@@
-333,14
+332,14
@@
int yflash2_WriteChunkWithTagsToNAND(yaffs_dev_t *dev,int nand_chunk,const __u8
if( 0 && dev->param.is_yaffs2)
{
if( 0 && dev->param.is_yaffs2)
{
- written = write(h,tags,sizeof(yaffs_ext_tags));
- if(written != sizeof(yaffs_ext_tags)) return YAFFS_FAIL;
+ written = write(h,tags,sizeof(
struct
yaffs_ext_tags));
+ if(written != sizeof(
struct
yaffs_ext_tags)) return YAFFS_FAIL;
}
else
{
}
else
{
-
yaffs_PackedT
ags2 pt;
- yaffs_
PackT
ags2(&pt,tags,!dev->param.no_tags_ecc);
-
__u8 * ptab = (__
u8 *)&pt;
+
struct yaffs_packed_t
ags2 pt;
+ yaffs_
pack_t
ags2(&pt,tags,!dev->param.no_tags_ecc);
+
u8 * ptab = (
u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
nRead = read(h,localBuffer,sizeof(pt));
for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
@@
-371,7
+370,7
@@
int yflash2_WriteChunkWithTagsToNAND(yaffs_dev_t *dev,int nand_chunk,const __u8
}
}
-int yaffs_check_all_ff(const
__
u8 *ptr, int n)
+int yaffs_check_all_ff(const u8 *ptr, int n)
{
while(n)
{
{
while(n)
{
@@
-388,7
+387,7
@@
static int fail320 = 1;
static int failRead10 = 2;
static int failRead10 = 2;
-int yflash2_ReadChunkWithTagsFromNAND(
yaffs_dev_t *dev,int nand_chunk, __u8 *data,
yaffs_ext_tags *tags)
+int yflash2_ReadChunkWithTagsFromNAND(
struct yaffs_dev *dev,int nand_chunk, u8 *data, struct
yaffs_ext_tags *tags)
{
int nread;
int pos;
{
int nread;
int pos;
@@
-397,7
+396,7
@@
int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *dat
int retval = YAFFS_OK;
int nRead;
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();
CheckInit();
@@
-412,8
+411,8
@@
int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *dat
}
}
-
yaffs_PackedTags2TagsPart
* pt2tp;
- pt2tp = (
yaffs_PackedTags2TagsPart
*)&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;
pos = (nand_chunk % (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE)) * PAGE_SIZE;
@@
-423,7
+422,7
@@
int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *dat
nRead = read(h, data,dev->param.total_bytes_per_chunk);
nRead = read(h, data,dev->param.total_bytes_per_chunk);
- yaffs_unpack_tags2
tags_part
(tags,pt2tp);
+ yaffs_unpack_tags2
_tags_only
(tags,pt2tp);
if(nread != dev->param.total_bytes_per_chunk)
retval = YAFFS_FAIL;
if(nread != dev->param.total_bytes_per_chunk)
retval = YAFFS_FAIL;
@@
-458,10
+457,10
@@
int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *dat
if(0 && dev->param.is_yaffs2)
{
if(0 && dev->param.is_yaffs2)
{
- nread= read(h,tags,sizeof(yaffs_ext_tags));
- if(nread != sizeof(yaffs_ext_tags))
+ nread= read(h,tags,sizeof(
struct
yaffs_ext_tags));
+ if(nread != sizeof(
struct
yaffs_ext_tags))
retval = YAFFS_FAIL;
retval = YAFFS_FAIL;
- if(yaffs_check_all_ff((
__u8 *)tags,sizeof(
yaffs_ext_tags)))
+ if(yaffs_check_all_ff((
u8 *)tags,sizeof(struct
yaffs_ext_tags)))
{
yaffs_init_tags(tags);
}
{
yaffs_init_tags(tags);
}
@@
-472,7
+471,7
@@
int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *dat
}
else
{
}
else
{
-
yaffs_PackedT
ags2 pt;
+
struct yaffs_packed_t
ags2 pt;
nread= read(h,&pt,sizeof(pt));
yaffs_unpack_tags2(tags,&pt, !dev->param.no_tags_ecc);
#ifdef SIMULATE_FAILURES
nread= read(h,&pt,sizeof(pt));
yaffs_unpack_tags2(tags,&pt, !dev->param.no_tags_ecc);
#ifdef SIMULATE_FAILURES
@@
-508,12
+507,12
@@
int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *dat
}
}
-int yflash2_MarkNANDBlockBad(struct yaffs_dev
_s
*dev, int block_no)
+int yflash2_MarkNANDBlockBad(struct yaffs_dev *dev, int block_no)
{
int written;
int h;
{
int written;
int h;
-
yaffs_PackedT
ags2 pt;
+
struct yaffs_packed_t
ags2 pt;
CheckInit();
CheckInit();
@@
-529,7
+528,7
@@
int yflash2_MarkNANDBlockBad(struct yaffs_dev_s *dev, int block_no)
}
}
-int yflash2_EraseBlockInNAND(
yaffs_dev_t
*dev, int blockNumber)
+int yflash2_EraseBlockInNAND(
struct yaffs_dev
*dev, int blockNumber)
{
int i;
{
int i;
@@
-537,20
+536,20
@@
int yflash2_EraseBlockInNAND(yaffs_dev_t *dev, int blockNumber)
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)
{
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
{
return YAFFS_FAIL;
}
else
{
-
__
u8 pg[PAGE_SIZE];
+ u8 pg[PAGE_SIZE];
int syz = PAGE_SIZE;
int pos;
int syz = PAGE_SIZE;
int pos;
@@
-570,7
+569,7
@@
int yflash2_EraseBlockInNAND(yaffs_dev_t *dev, int blockNumber)
}
}
-int yflash2_InitialiseNAND(
yaffs_dev_t
*dev)
+int yflash2_InitialiseNAND(
struct yaffs_dev
*dev)
{
CheckInit();
{
CheckInit();
@@
-580,9
+579,9
@@
int yflash2_InitialiseNAND(yaffs_dev_t *dev)
-int yflash2_QueryNANDBlock(struct yaffs_dev
_s *dev, int block_no, yaffs_block_state_t *state, __
u32 *seq_number)
+int yflash2_QueryNANDBlock(struct yaffs_dev
*dev, int block_no, enum yaffs_block_state *state,
u32 *seq_number)
{
{
- yaffs_ext_tags tags;
+
struct
yaffs_ext_tags tags;
int chunkNo;
*seq_number = 0;
int chunkNo;
*seq_number = 0;
@@
-600,7
+599,7
@@
int yflash2_QueryNANDBlock(struct yaffs_dev_s *dev, int block_no, yaffs_block_st
}
else if(tags.chunk_used)
{
}
else if(tags.chunk_used)
{
- *state = YAFFS_BLOCK_STATE_NEEDS_SCAN
NING
;
+ *state = YAFFS_BLOCK_STATE_NEEDS_SCAN;
*seq_number = tags.seq_number;
}
return YAFFS_OK;
*seq_number = tags.seq_number;
}
return YAFFS_OK;