yaffs Fix yaffs1 soft delete issue
[yaffs2.git] / yaffs_guts.h
index ca18503d5ae29de13e50b88ec728a20d7314a867..6d4ae46a9d0b4d16890635a67c00e8be71ebb64a 100644 (file)
@@ -16,8 +16,9 @@
 #ifndef __YAFFS_GUTS_H__
 #define __YAFFS_GUTS_H__
 
-#include "devextras.h"
 #include "yportenv.h"
+#include "devextras.h"
+#include "yaffs_list.h"
 
 #define YAFFS_OK       1
 #define YAFFS_FAIL  0
@@ -52,7 +53,6 @@
 
 #define YAFFS_MAX_CHUNK_ID             0x000FFFFF
 
-#define YAFFS_UNUSED_OBJECT_ID         0x0003FFFF
 
 #define YAFFS_ALLOCATION_NOBJECTS      100
 #define YAFFS_ALLOCATION_NTNODES       100
@@ -62,6 +62,7 @@
 
 
 #define YAFFS_OBJECT_SPACE             0x40000
+#define YAFFS_MAX_OBJECT_ID            (YAFFS_OBJECT_SPACE -1)
 
 #define YAFFS_CHECKPOINT_VERSION       4
 
@@ -516,7 +517,7 @@ typedef struct {
 
 
 struct yaffs_DeviceParamStruct {
-       const char *name;
+       const YCHAR *name;
 
        /*
          * Entry parameters set up way early. Yaffs sets up the rest.
@@ -598,6 +599,10 @@ struct yaffs_DeviceParamStruct {
        int disableSoftDelete;  /* yaffs 1 only: Set to disable the use of softdeletion. */
        
        int deferDirectoryUpdate; /* Set to defer directory updates */
+
+#ifdef CONFIG_YAFFS_AUTO_UNICODE
+       int autoUnicode;
+#endif
        
 };
 
@@ -608,7 +613,10 @@ struct yaffs_DeviceStruct {
 
         /* Context storage. Holds extra OS specific data for this device */
 
-       void *context;
+       void *osContext;
+       void *driverContext;
+
+       struct ylist_head devList;
 
        /* Runtime parameters. Set up by YAFFS. */
        int nDataBytesPerChunk; 
@@ -688,6 +696,7 @@ struct yaffs_DeviceStruct {
 
        /* 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;
@@ -814,7 +823,7 @@ struct yaffs_ShadowFixerStruct {
 /* 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;
@@ -888,10 +897,10 @@ yaffs_Object *yaffs_MknodSpecial(yaffs_Object *parent, const YCHAR *name,
                                 __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);
@@ -928,6 +937,7 @@ yaffs_Object *yaffs_FindOrCreateObjectByNumber(yaffs_Device *dev,
 int yaffs_PutChunkIntoFile(yaffs_Object *in, int chunkInInode,
                                int chunkInNAND, int inScan);
 void yaffs_SetObjectName(yaffs_Object *obj, const YCHAR *name);
+void yaffs_SetObjectNameFromOH(yaffs_Object *obj, const yaffs_ObjectHeader *oh);
 void yaffs_AddObjectToDirectory(yaffs_Object *directory,
                                        yaffs_Object *obj);
 YCHAR *yaffs_CloneString(const YCHAR *str);