yaffs: Cache object xattrib state.
[yaffs2.git] / yaffs_guts.h
index 90c3022e2b82b9cd3b10df68a465e9ddf734bf7e..dea450f3ac7d50b00d56ae4563b3a88a0de57fe4 100644 (file)
@@ -423,6 +423,9 @@ struct yaffs_ObjectStruct {
        __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 */
 
@@ -696,6 +699,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;
@@ -758,6 +762,7 @@ struct yaffs_DeviceStruct {
        __u32 allGCs;
        __u32 passiveGCs;
        __u32 oldestDirtyGCs;
+       __u32 nGCBlocks;
        __u32 backgroundGCs;
        __u32 nRetriedWrites;
        __u32 nRetiredBlocks;
@@ -896,10 +901,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);