X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_fs.c;h=df0870d1afeb2d79765833944ce554774b2c5023;hp=368e6579cd630146f9954f4bffe08e68d1cfa345;hb=170ea32c52fd2d9b7cbda9b169ad44038b1d15cf;hpb=5e1b1f2ad15a8d27d2ee4dadbc712d702dc78b93 diff --git a/yaffs_fs.c b/yaffs_fs.c index 368e657..df0870d 100644 --- a/yaffs_fs.c +++ b/yaffs_fs.c @@ -31,13 +31,15 @@ */ const char *yaffs_fs_c_version = - "$Id: yaffs_fs.c,v 1.55 2006-12-19 21:33:41 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 +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) #include +#endif #include #include -#include #include #include #include @@ -89,7 +91,13 @@ unsigned yaffs_traceMask = YAFFS_TRACE_ALWAYS | /*#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)) @@ -189,8 +197,15 @@ static struct address_space_operations yaffs_file_address_operations = { }; 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, @@ -408,7 +423,7 @@ static void yaffs_clear_inode(struct inode *inode) * 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. @@ -704,7 +719,9 @@ static void yaffs_FillInodeFromObject(struct inode *inode, yaffs_Object * obj) 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); @@ -756,7 +773,8 @@ static void yaffs_FillInodeFromObject(struct inode *inode, yaffs_Object * obj) break; } - inode->u.generic_ip = obj; + yaffs_InodeToObjectLV(inode) = obj; + obj->myInode = inode; } else { @@ -1322,7 +1340,7 @@ static int yaffs_statfs(struct super_block *sb, struct statfs *buf) } - +/** static int yaffs_do_sync_fs(struct super_block *sb) { @@ -1341,7 +1359,7 @@ 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) @@ -1947,7 +1965,7 @@ static int yaffs_proc_write(struct file *file, const char *buf, char *end, *mask_name; int i; int done = 0; - int add, len; + int add, len = 0; int pos = 0; rg = yaffs_traceMask;