projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add large NAND support and improve retirement handling
[yaffs2.git]
/
yaffs_guts.h
diff --git
a/yaffs_guts.h
b/yaffs_guts.h
index de0627e273a6579def2b1deaae816e0726ea5e38..cb9a8e09bce4d11beb29530ff6421ea455b5bae2 100644
(file)
--- a/
yaffs_guts.h
+++ b/
yaffs_guts.h
@@
-14,7
+14,7
@@
*
* Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
*
*
* Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
*
- * $Id: yaffs_guts.h,v 1.2
2 2006-05-17 09:31:06
charles Exp $
+ * $Id: yaffs_guts.h,v 1.2
4 2006-10-03 10:13:03
charles Exp $
*/
#ifndef __YAFFS_GUTS_H__
*/
#ifndef __YAFFS_GUTS_H__
@@
-273,6
+273,10
@@
typedef struct {
yaffs_BlockState blockState:4; /* One of the above block states */
__u32 needsRetiring:1; /* Data has failed on this block, need to get valid data off */
/* and retire the block. */
yaffs_BlockState blockState:4; /* One of the above block states */
__u32 needsRetiring:1; /* Data has failed on this block, need to get valid data off */
/* and retire the block. */
+ __u32 skipErasedCheck: 1; /* If this is set we can skip the erased check on this block */
+ __u32 gcPrioritise: 1; /* An ECC check or bank check has failed on this block.
+ It should be prioritised for GC */
+
#ifdef CONFIG_YAFFS_YAFFS2
__u32 hasShrinkHeader:1; /* This block has at least one shrink object header */
__u32 sequenceNumber; /* block sequence number for yaffs2 */
#ifdef CONFIG_YAFFS_YAFFS2
__u32 hasShrinkHeader:1; /* This block has at least one shrink object header */
__u32 sequenceNumber; /* block sequence number for yaffs2 */
@@
-520,7
+524,7
@@
struct yaffs_DeviceStruct {
const char *name;
/* Entry parameters set up way early. Yaffs sets up the rest.*/
const char *name;
/* Entry parameters set up way early. Yaffs sets up the rest.*/
- int n
BytesPerChunk;
/* Should be a power of 2 >= 512 */
+ int n
DataBytesPerChunk;
/* Should be a power of 2 >= 512 */
int nChunksPerBlock; /* does not need to be a power of 2 */
int nBytesPerSpare; /* spare area size */
int startBlock; /* Start block we're allowed to use */
int nChunksPerBlock; /* does not need to be a power of 2 */
int nBytesPerSpare; /* spare area size */
int startBlock; /* Start block we're allowed to use */
@@
-602,6
+606,16
@@
struct yaffs_DeviceStruct {
__u32 tnodeWidth;
__u32 tnodeMask;
__u32 tnodeWidth;
__u32 tnodeMask;
+ /* Stuff to support various file offses to chunk/offset translations */
+ /* "Crumbs" for nDataBytesPerChunk not being a power of 2 */
+ __u32 crumbMask;
+ __u32 crumbShift;
+ __u32 crumbsPerChunk;
+
+ /* Straight shifting for nDataBytesPerChunk being a power of 2 */
+ __u32 chunkShift;
+ __u32 chunkMask;
+
#ifdef __KERNEL__
#ifdef __KERNEL__
@@
-617,6
+631,7
@@
struct yaffs_DeviceStruct {
int isCheckpointed;
int isCheckpointed;
+
/* Stuff to support block offsetting to support start block zero */
int internalStartBlock;
int internalEndBlock;
/* Stuff to support block offsetting to support start block zero */
int internalStartBlock;
int internalEndBlock;
@@
-689,6
+704,8
@@
struct yaffs_DeviceStruct {
int tagsEccUnfixed;
int nDeletions;
int nUnmarkedDeletions;
int tagsEccUnfixed;
int nDeletions;
int nUnmarkedDeletions;
+
+ int hasPendingPrioritisedGCs; /* We think this device might have pending prioritised gcs */
/* Special directories */
yaffs_Object *rootDir;
/* Special directories */
yaffs_Object *rootDir;
@@
-804,11
+821,11
@@
int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr);
int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr);
/* File operations */
int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr);
/* File operations */
-int yaffs_ReadDataFromFile(yaffs_Object * obj, __u8 * buffer,
__u32
offset,
+int yaffs_ReadDataFromFile(yaffs_Object * obj, __u8 * buffer,
loff_t
offset,
int nBytes);
int nBytes);
-int yaffs_WriteDataToFile(yaffs_Object * obj, const __u8 * buffer,
__u32
offset,
+int yaffs_WriteDataToFile(yaffs_Object * obj, const __u8 * buffer,
loff_t
offset,
int nBytes, int writeThrough);
int nBytes, int writeThrough);
-int yaffs_ResizeFile(yaffs_Object * obj,
in
t newSize);
+int yaffs_ResizeFile(yaffs_Object * obj,
loff_
t newSize);
yaffs_Object *yaffs_MknodFile(yaffs_Object * parent, const YCHAR * name,
__u32 mode, __u32 uid, __u32 gid);
yaffs_Object *yaffs_MknodFile(yaffs_Object * parent, const YCHAR * name,
__u32 mode, __u32 uid, __u32 gid);