__u8 beingCreated:1; /* This object is still being created so skip some checks. */
__u8 isShadowed:1; /* This object is shadowed on the way to being renamed. */
+ __u8 xattrKnown:1; /* We know if this has object has xattribs or not. */
+ __u8 hasXattr:1; /* This object has xattribs. Valid if xattrKnown. */
+
__u8 serial; /* serial number of chunk in NAND. Cached here */
__u16 sum; /* sum of the name to speed searching */
struct yaffs_DeviceParamStruct {
- const char *name;
+ const YCHAR *name;
/*
* Entry parameters set up way early. Yaffs sets up the rest.
/* Garbage collection control */
__u32 *gcCleanupList; /* objects to delete at the end of a GC. */
+ __u32 nCleanups;
unsigned hasPendingPrioritisedGCs; /* We think this device might have pending prioritised gcs */
unsigned gcDisable;
__u32 allGCs;
__u32 passiveGCs;
__u32 oldestDirtyGCs;
+ __u32 nGCBlocks;
__u32 backgroundGCs;
__u32 nRetriedWrites;
__u32 nRetiredBlocks;
/* Structure for doing xattr modifications */
typedef struct {
int set; /* If 0 then this is a deletion */
- const char *name;
+ const YCHAR *name;
const void *data;
int size;
int flags;
__u32 mode, __u32 uid, __u32 gid, __u32 rdev);
-int yaffs_SetXAttribute(yaffs_Object *obj, const char *name, const void * value, int size, int flags);
-int yaffs_GetXAttribute(yaffs_Object *obj, const char *name, void *value, int size);
+int yaffs_SetXAttribute(yaffs_Object *obj, const YCHAR *name, const void * value, int size, int flags);
+int yaffs_GetXAttribute(yaffs_Object *obj, const YCHAR *name, void *value, int size);
int yaffs_ListXAttributes(yaffs_Object *obj, char *buffer, int size);
-int yaffs_RemoveXAttribute(yaffs_Object *obj, const char *name);
+int yaffs_RemoveXAttribute(yaffs_Object *obj, const YCHAR *name);
/* Special directories */
yaffs_Object *yaffs_Root(yaffs_Device *dev);
void yaffs_GutsTest(yaffs_Device *dev);
/* A few useful functions to be used within the core files*/
-void yaffs_InitialiseTags(yaffs_ExtendedTags *tags);
void yaffs_DeleteChunk(yaffs_Device *dev, int chunkId, int markNAND, int lyn);
int yaffs_CheckFF(__u8 *buffer, int nBytes);
void yaffs_HandleChunkError(yaffs_Device *dev, yaffs_BlockInfo *bi);
yaffs_FileStructure *fStruct,
__u32 chunkId,
yaffs_Tnode *passedTn);
-void yaffs_VerifyObjects(yaffs_Device *dev);
-void yaffs_VerifyBlocks(yaffs_Device *dev);
-void yaffs_VerifyFreeChunks(yaffs_Device *dev);
+
int yaffs_DoWriteDataToFile(yaffs_Object *in, const __u8 *buffer, loff_t offset,
int nBytes, int writeThrough);
void yaffs_ResizeDown( yaffs_Object *obj, loff_t newSize);