diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-06-26 20:42:58 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2010-06-26 20:42:58 +0000 |
commit | a082943b09f4f707990ad0ac6326df8480507f02 (patch) | |
tree | de32e4def600e56134cd085a7447cb6620542078 /target/linux/generic/patches-2.6.25/512-yaffs_2.6.25_fix.patch | |
parent | 67fbcc7bd42cc07b1f3c6b5c9f2db37647178f25 (diff) | |
download | master-187ad058-a082943b09f4f707990ad0ac6326df8480507f02.tar.gz master-187ad058-a082943b09f4f707990ad0ac6326df8480507f02.tar.bz2 master-187ad058-a082943b09f4f707990ad0ac6326df8480507f02.zip |
rename target/linux/generic-2.6 to generic
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21952 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/patches-2.6.25/512-yaffs_2.6.25_fix.patch')
-rw-r--r-- | target/linux/generic/patches-2.6.25/512-yaffs_2.6.25_fix.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/target/linux/generic/patches-2.6.25/512-yaffs_2.6.25_fix.patch b/target/linux/generic/patches-2.6.25/512-yaffs_2.6.25_fix.patch new file mode 100644 index 0000000000..c127336346 --- /dev/null +++ b/target/linux/generic/patches-2.6.25/512-yaffs_2.6.25_fix.patch @@ -0,0 +1,92 @@ +--- a/fs/yaffs2/yaffs_fs.c ++++ b/fs/yaffs2/yaffs_fs.c +@@ -181,7 +181,13 @@ static int yaffs_statfs(struct super_blo + #else + static int yaffs_statfs(struct super_block *sb, struct statfs *buf); + #endif ++ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) ++static struct inode *yaffs_iget(struct super_block *sb, unsigned long ino); ++#else + static void yaffs_read_inode(struct inode *inode); ++#endif ++ + + static void yaffs_put_inode(struct inode *inode); + static void yaffs_delete_inode(struct inode *); +@@ -284,7 +290,9 @@ static struct file_operations yaffs_dir_ + + static struct super_operations yaffs_super_ops = { + .statfs = yaffs_statfs, ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)) + .read_inode = yaffs_read_inode, ++#endif + .put_inode = yaffs_put_inode, + .put_super = yaffs_put_super, + .delete_inode = yaffs_delete_inode, +@@ -844,11 +852,17 @@ struct inode *yaffs_get_inode(struct sup + T(YAFFS_TRACE_OS, + (KERN_DEBUG "yaffs_get_inode for object %d\n", obj->objectId)); + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) ++ inode = yaffs_iget(sb, obj->objectId); ++ if (IS_ERR(inode)) ++ return NULL; ++#else + inode = iget(sb, obj->objectId); + + /* NB Side effect: iget calls back to yaffs_read_inode(). */ + /* iget also increments the inode's i_count */ + /* NB You can't be holding grossLock or deadlock will happen! */ ++#endif + + return inode; + } +@@ -1427,6 +1441,39 @@ static int yaffs_sync_fs(struct super_bl + } + + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) ++static struct inode *yaffs_iget(struct super_block *sb, unsigned long ino) ++{ ++ yaffs_Object *obj; ++ yaffs_Device *dev = yaffs_SuperToDevice(sb); ++ struct inode *inode; ++ ++ T(YAFFS_TRACE_OS, ++ (KERN_DEBUG "yaffs_iget for %lu\n", ino)); ++ ++ inode = iget_locked(sb, ino); ++ if (!inode) ++ return ERR_PTR(-ENOMEM); ++ if (!(inode->i_state & I_NEW)) ++ return inode; ++ ++ /* NB This is called as a side effect of other functions, but ++ * we had to release the lock to prevent deadlocks, so ++ * need to lock again. ++ */ ++ ++ yaffs_GrossLock(dev); ++ ++ obj = yaffs_FindObjectByNumber(dev, inode->i_ino); ++ ++ yaffs_FillInodeFromObject(inode, obj); ++ ++ yaffs_GrossUnlock(dev); ++ ++ unlock_new_inode(inode); ++ return inode; ++} ++#else + static void yaffs_read_inode(struct inode *inode) + { + /* NB This is called as a side effect of other functions, but +@@ -1448,6 +1495,7 @@ static void yaffs_read_inode(struct inod + + yaffs_GrossUnlock(dev); + } ++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) */ + + static LIST_HEAD(yaffs_dev_list); + |