projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New fix for readdir hang
[yaffs2.git]
/
yaffs_guts.h
diff --git
a/yaffs_guts.h
b/yaffs_guts.h
index cb8d8ec788683b26b29b646faaf2d9bf1d4dae15..c58c84bf1f29962c1fcc74ab7596e7942a35330f 100644
(file)
--- a/
yaffs_guts.h
+++ b/
yaffs_guts.h
@@
-405,6
+405,8
@@
typedef union {
yaffs_HardLinkStructure hardLinkVariant;
} yaffs_ObjectVariant;
yaffs_HardLinkStructure hardLinkVariant;
} yaffs_ObjectVariant;
+
+
struct yaffs_ObjectStruct {
__u8 deleted:1; /* This should only apply to unlinked files. */
__u8 softDeleted:1; /* it has also been soft deleted */
struct yaffs_ObjectStruct {
__u8 deleted:1; /* This should only apply to unlinked files. */
__u8 softDeleted:1; /* it has also been soft deleted */
@@
-424,6
+426,7
@@
struct yaffs_ObjectStruct {
* until the inode is released.
*/
__u8 beingCreated:1; /* This object is still being created so skip some checks. */
* until the inode is released.
*/
__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 serial; /* serial number of chunk in NAND. Cached here */
__u16 sum; /* sum of the name to speed searching */
__u8 serial; /* serial number of chunk in NAND. Cached here */
__u16 sum; /* sum of the name to speed searching */
@@
-531,6
+534,7
@@
typedef struct {
/*----------------- Device ---------------------------------*/
/*----------------- Device ---------------------------------*/
+
struct yaffs_DeviceStruct {
struct ylist_head devList;
const char *name;
struct yaffs_DeviceStruct {
struct ylist_head devList;
const char *name;
@@
-557,7
+561,10
@@
struct yaffs_DeviceStruct {
int useHeaderFileSize; /* Flag to determine if we should use file sizes from the header */
int useHeaderFileSize; /* Flag to determine if we should use file sizes from the header */
- int useNANDECC; /* Flag to decide whether or not to use NANDECC */
+ int useNANDECC; /* Flag to decide whether or not to use NANDECC on data (yaffs1) */
+ int noTagsECC; /* Flag to decide whether or not to do ECC on packed tags (yaffs2) */
+
+ int disableLazyLoad; /* Disable lazy loading on this device */
void *genericDevice; /* Pointer to device context
* On an mtd this holds the mtd pointer.
void *genericDevice; /* Pointer to device context
* On an mtd this holds the mtd pointer.
@@
-592,8
+599,9
@@
struct yaffs_DeviceStruct {
int isYaffs2;
/* The removeObjectCallback function must be supplied by OS flavours that
int isYaffs2;
/* The removeObjectCallback function must be supplied by OS flavours that
- * need it. The Linux kernel does not use this, but yaffs direct does use
- * it to implement the faster readdir
+ * need it.
+ * yaffs direct uses it to implement the faster readdir.
+ * Linux uses it to protect the directory during unlocking.
*/
void (*removeObjectCallback)(struct yaffs_ObjectStruct *obj);
*/
void (*removeObjectCallback)(struct yaffs_ObjectStruct *obj);
@@
-633,10
+641,14
@@
struct yaffs_DeviceStruct {
struct semaphore sem; /* Semaphore for waiting on erasure.*/
struct semaphore grossLock; /* Gross locking semaphore */
struct semaphore sem; /* Semaphore for waiting on erasure.*/
struct semaphore grossLock; /* Gross locking semaphore */
+ struct rw_semaphore dirLock; /* Lock the directory structure */
__u8 *spareBuffer; /* For mtdif2 use. Don't know the size of the buffer
* at compile time so we have to allocate it.
__u8 *spareBuffer; /* For mtdif2 use. Don't know the size of the buffer
* at compile time so we have to allocate it.
+
*/
void (*putSuperFunc) (struct super_block *sb);
*/
void (*putSuperFunc) (struct super_block *sb);
+ struct ylist_head searchContexts;
+
#endif
int isMounted;
#endif
int isMounted;
@@
-764,7
+776,9
@@
struct yaffs_DeviceStruct {
/* yaffs2 runtime stuff */
unsigned sequenceNumber; /* Sequence number of currently allocating block */
unsigned oldestDirtySequence;
/* yaffs2 runtime stuff */
unsigned sequenceNumber; /* Sequence number of currently allocating block */
unsigned oldestDirtySequence;
-
+
+ /* Auto empty lost and found directory on mount */
+ int emptyLostAndFound;
};
typedef struct yaffs_DeviceStruct yaffs_Device;
};
typedef struct yaffs_DeviceStruct yaffs_Device;