Hi alls: I am a user of YAFFS2 in our project blackfin-uclinux (blackfin.uclinux.org). When merging the YAFFS2 latest CVS root.tar.gz patches to the 2.6.19 kernel, I found errors due to some kernel API changes: ================================================================ CC [M] fs/yaffs2/yaffs_fs.o fs/yaffs2/yaffs_fs.c:192: error: 'generic_file_read' undeclared here (not in a function) fs/yaffs2/yaffs_fs.c:193: error: 'generic_file_write' undeclared here (not in a function) fs/yaffs2/yaffs_fs.c: In function 'yaffs_readlink': fs/yaffs2/yaffs_fs.c:263: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:267: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_follow_link': fs/yaffs2/yaffs_fs.c:287: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:291: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_lookup': fs/yaffs2/yaffs_fs.c:328: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:332: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:337: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_clear_inode': fs/yaffs2/yaffs_fs.c:396: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:411: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_delete_inode': fs/yaffs2/yaffs_fs.c:432: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_file_flush': fs/yaffs2/yaffs_fs.c:458: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_readpage_nolock': fs/yaffs2/yaffs_fs.c:489: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_writepage': fs/yaffs2/yaffs_fs.c:589: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_FillInodeFromObject': fs/yaffs2/yaffs_fs.c:707: error: 'struct inode' has no member named 'i_blksize' fs/yaffs2/yaffs_fs.c:759: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_file_write': fs/yaffs2/yaffs_fs.c:808: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:826: warning: format '%d' expects type 'int', but argument 2 has type 'size_t' fs/yaffs2/yaffs_fs.c:835: warning: format '%d' expects type 'int', but argument 2 has type 'size_t' fs/yaffs2/yaffs_fs.c: In function 'yaffs_readdir': fs/yaffs2/yaffs_fs.c:868: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_mknod': fs/yaffs2/yaffs_fs.c:962: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_unlink': fs/yaffs2/yaffs_fs.c:1077: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1081: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_link': fs/yaffs2/yaffs_fs.c:1107: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1115: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_symlink': fs/yaffs2/yaffs_fs.c:1150: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1152: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_sync_object': fs/yaffs2/yaffs_fs.c:1179: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_rename': fs/yaffs2/yaffs_fs.c:1203: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1209: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1227: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1229: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_setattr': fs/yaffs2/yaffs_fs.c:1254: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1260: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c:1262: error: 'struct inode' has no member named 'u' fs/yaffs2/yaffs_fs.c: In function 'yaffs_statfs': fs/yaffs2/yaffs_fs.c:1278: error: 'struct inode' has no member named 'u' make[3]: *** [fs/yaffs2/yaffs_fs.o] Error 1 make[2]: *** [fs/yaffs2] Error 2 make[1]: *** [fs] Error 2 ============================================= So I submitted the patch to correct these errors: fixed-API-changes-in-2.6.19.patch ============================================= --- Development/yaffs2/yaffs_fs.c 2006-12-20 05:33:41.000000000 +0800 +++ linux-2.6/fs/yaffs2/yaffs_fs.c 2007-01-02 15:33:44.000000000 +0800 @@ -19,7 +19,7 @@ * this superblock * >> 2.6: sb->s_fs_info points to the yaffs_Device associated with this * superblock - * >> inode->u.generic_ip points to the associated yaffs_Object. + * >> inode->i_private points to the associated yaffs_Object. * * Acknowledgements: * * Luc van OostenRyck for numerous patches. @@ -89,7 +89,7 @@ unsigned yaffs_traceMask = YAFFS_TRACE_A /*#define T(x) printk x */ -#define yaffs_InodeToObject(iptr) ((yaffs_Object *)((iptr)->u.generic_ip)) +#define yaffs_InodeToObject(iptr) ((yaffs_Object *)((iptr)->i_private)) #define yaffs_DentryToObject(dptr) yaffs_InodeToObject((dptr)->d_inode) #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) @@ -189,8 +189,8 @@ static struct address_space_operations y }; static struct file_operations yaffs_file_operations = { - .read = generic_file_read, - .write = generic_file_write, + .read = do_sync_read, + .write = do_sync_write, .mmap = generic_file_mmap, .flush = yaffs_file_flush, .fsync = yaffs_sync_object, @@ -408,7 +408,7 @@ static void yaffs_clear_inode(struct ino * the yaffs_Object. */ obj->myInode = NULL; - inode->u.generic_ip = NULL; + inode->i_private = NULL; /* If the object freeing was deferred, then the real * free happens now. @@ -704,7 +704,6 @@ static void yaffs_FillInodeFromObject(st inode->i_mode = obj->yst_mode; inode->i_uid = obj->yst_uid; inode->i_gid = obj->yst_gid; - inode->i_blksize = inode->i_sb->s_blocksize; #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) inode->i_rdev = old_decode_dev(obj->yst_rdev); @@ -756,7 +755,7 @@ static void yaffs_FillInodeFromObject(st break; } - inode->u.generic_ip = obj; + inode->i_private = obj; obj->myInode = inode; } else { ==============================================