*/
const char *yaffs_fs_c_version =
- "$Id: yaffs_fs.c,v 1.54 2006-10-24 18:09:15 charles Exp $";
+ "$Id: yaffs_fs.c,v 1.56 2007-01-19 04:07:48 charles Exp $";
extern const char *yaffs_guts_c_version;
+#include <linux/version.h>
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
#include <linux/config.h>
+#endif
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/version.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/list.h>
/*#define T(x) printk x */
-#define yaffs_InodeToObject(iptr) ((yaffs_Object *)((iptr)->u.generic_ip))
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
+#define yaffs_InodeToObjectLV(iptr) (iptr)->i_private
+#else
+#define yaffs_InodeToObjectLV(iptr) (iptr)->u.generic_ip
+#endif
+
+#define yaffs_InodeToObject(iptr) ((yaffs_Object *)(yaffs_InodeToObjectLV(iptr)))
#define yaffs_DentryToObject(dptr) yaffs_InodeToObject((dptr)->d_inode)
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
};
static struct file_operations yaffs_file_operations = {
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18))
+ .read = do_sync_read,
+ .write = do_sync_write,
+ .aio_read = generic_file_aio_read,
+ .aio_write = generic_file_aio_write,
+#else
.read = generic_file_read,
.write = generic_file_write,
+#endif
.mmap = generic_file_mmap,
.flush = yaffs_file_flush,
.fsync = yaffs_sync_object,
* the yaffs_Object.
*/
obj->myInode = NULL;
- inode->u.generic_ip = NULL;
+ yaffs_InodeToObjectLV(inode) = NULL;
/* If the object freeing was deferred, then the real
* free happens now.
inode->i_mode = obj->yst_mode;
inode->i_uid = obj->yst_uid;
inode->i_gid = obj->yst_gid;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
inode->i_blksize = inode->i_sb->s_blocksize;
+#endif
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
inode->i_rdev = old_decode_dev(obj->yst_rdev);
break;
}
- inode->u.generic_ip = obj;
+ yaffs_InodeToObjectLV(inode) = obj;
+
obj->myInode = inode;
} else {
}
-
+/**
static int yaffs_do_sync_fs(struct super_block *sb)
{
}
return 0;
}
-
+**/
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
static void yaffs_write_super(struct super_block *sb)
#endif
nBlocks = mtd->size / mtd->erasesize;
- dev->nCheckpointReservedBlocks = 10;
+ dev->nCheckpointReservedBlocks = CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS;
dev->startBlock = 0;
dev->endBlock = nBlocks - 1;
} else {
char *end, *mask_name;
int i;
int done = 0;
- int add, len;
+ int add, len = 0;
int pos = 0;
rg = yaffs_traceMask;
}
}
- yaffs_traceMask = rg;
+ yaffs_traceMask = rg | YAFFS_TRACE_ALWAYS;
+
if (rg & YAFFS_TRACE_ALWAYS) {
for (i = 0; mask_flags[i].mask_name != NULL; i++) {
char flag;