From: charles Date: Fri, 19 Jan 2007 04:07:48 +0000 (+0000) Subject: Update for Linux 2.6.19 support X-Git-Tag: pre-name-change~321 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=2ae22f05374b4cb19202ddaac9fc47458c732f0d;ds=sidebyside Update for Linux 2.6.19 support --- 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; diff --git a/yportenv.h b/yportenv.h index e8b9d09..3e6caae 100644 --- a/yportenv.h +++ b/yportenv.h @@ -15,7 +15,7 @@ * * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. * - * $Id: yportenv.h,v 1.11 2006-05-21 09:39:12 charles Exp $ + * $Id: yportenv.h,v 1.12 2007-01-19 04:07:48 charles Exp $ * */ @@ -31,9 +31,11 @@ #include "moduleconfig.h" /* Linux kernel */ +#include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) #include +#endif #include -#include #include #include #include