Sorry. I forgot to CC to the mailing list. ---------------------------------------------------------------------------- Hi, Bob Thank you very much for your help! Your patch almost worked except that there is another change in 2.6.26 that the symbol proc_root is invisible, too. The init_yaffs_fs() and exit_yaffs_fs() needs slight modifications when creating and removing the proc entry /proc/yaffs. I have another patch based on yours: --- fs/yaffs2/yaffs_fs.c (revision 79) +++ fs/yaffs2/yaffs_fs.c (working copy) @@ -196,7 +196,9 @@ static int yaffs_statfs(struct super_block *sb, struct statfs *buf); #endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) static void yaffs_put_inode(struct inode *inode); +#endif static void yaffs_delete_inode(struct inode *); static void yaffs_clear_inode(struct inode *); @@ -301,7 +303,9 @@ #ifndef YAFFS_USE_OWN_IGET .read_inode = yaffs_read_inode, #endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) .put_inode = yaffs_put_inode, +#endif .put_super = yaffs_put_super, .delete_inode = yaffs_delete_inode, .clear_inode = yaffs_clear_inode, @@ -445,6 +449,7 @@ } +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) /* For now put inode is just for debugging * Put inode is called when the inode **structure** is put. */ @@ -455,6 +460,7 @@ atomic_read(&inode->i_count))); } +#endif /* clear is called to tell the fs to release any per-inode data it holds */ static void yaffs_clear_inode(struct inode *inode) @@ -2304,7 +2310,7 @@ /* Install the proc_fs entry */ my_proc_entry = create_proc_entry("yaffs", S_IRUGO | S_IFREG, - &proc_root); + NULL); if (my_proc_entry) { my_proc_entry->write_proc = yaffs_proc_write; @@ -2350,7 +2356,7 @@ T(YAFFS_TRACE_ALWAYS, ("yaffs " __DATE__ " " __TIME__ " removing. \n")); - remove_proc_entry("yaffs", &proc_root); + remove_proc_entry("yaffs", NULL); fsinst = fs_to_install; BR, Hanjun KOU -----Original Message----- From: Bob Dunlop [mailto:rdunlop@guralp.com] Sent: Tuesday, July 22, 2008 4:28 PM To: KOU Hanjun Cc: yaffs@lists.aleph1.co.uk Subject: Re: [Yaffs] yaffs with kernel 2.6.26: no put_inode() Hi, On Tue, Jul 22 at 02:58, KOU Hanjun wrote: > Hi, > > Did anybody spend some time in compiling yaffs for 2.6.26? Not yet, although I'm sure I'll have that pleasure to come. > The .put_inode member in struct super_operations has been removed in 2.6.26. > > Anybody with a patch? Since the function is just a debug printf in YAFFS and no longer used in the kernel I think it would be safe to simply delete it. Untested patch below, let us know how you get on. --- yaffs_fs.c-orig 2008-07-22 09:21:20.000000000 +0100 +++ yaffs_fs.c 2008-07-22 09:22:03.000000000 +0100 @@ -183,7 +183,6 @@ #endif static void yaffs_read_inode(struct inode *inode); -static void yaffs_put_inode(struct inode *inode); static void yaffs_delete_inode(struct inode *); static void yaffs_clear_inode(struct inode *); @@ -285,7 +284,6 @@ static struct super_operations yaffs_super_ops = { .statfs = yaffs_statfs, .read_inode = yaffs_read_inode, - .put_inode = yaffs_put_inode, .put_super = yaffs_put_super, .delete_inode = yaffs_delete_inode, .clear_inode = yaffs_clear_inode, @@ -429,17 +427,6 @@ } -/* For now put inode is just for debugging - * Put inode is called when the inode **structure** is put. - */ -static void yaffs_put_inode(struct inode *inode) -{ - T(YAFFS_TRACE_OS, - ("yaffs_put_inode: ino %d, count %d\n", (int)inode->i_ino, - atomic_read(&inode->i_count))); - -} - /* clear is called to tell the fs to release any per-inode data it holds */ static void yaffs_clear_inode(struct inode *inode) { -- Bob Dunlop Guralp Systems Limited http://www.guralp.com