kernel: update yaffs code
[openwrt/svn-archive/archive.git] / target / linux / generic / patches-3.10 / 506-yaffs-3.2-dont-use-i_nlink-directly.patch
diff --git a/target/linux/generic/patches-3.10/506-yaffs-3.2-dont-use-i_nlink-directly.patch b/target/linux/generic/patches-3.10/506-yaffs-3.2-dont-use-i_nlink-directly.patch
deleted file mode 100644 (file)
index 91e8281..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
---- a/fs/yaffs2/yaffs_vfs_glue.c
-+++ b/fs/yaffs2/yaffs_vfs_glue.c
-@@ -220,6 +220,29 @@ static struct inode *yaffs_iget(struct s
- #define yaffs_SuperToDevice(sb)       ((yaffs_dev_t *)sb->u.generic_sbp)
- #endif
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 2, 0))
-+static inline void yaffs_set_nlink(struct inode *inode, unsigned int nlink)
-+{
-+      set_nlink(inode, nlink);
-+}
-+
-+static inline void yaffs_dec_link_count(struct inode *inode)
-+{
-+      inode_dec_link_count(inode);
-+}
-+#else
-+static inline void yaffs_set_nlink(struct inode *inode, unsigned int nlink)
-+{
-+      inode->i_nlink = nlink;
-+}
-+
-+static inline void yaffs_dec_link_count(struct inode *inode)
-+{
-+      inode->i_nlink--;
-+      mark_inode_dirty(inode)
-+}
-+#endif
-+
- #define update_dir_time(dir) do {\
-                       (dir)->i_ctime = (dir)->i_mtime = CURRENT_TIME; \
-@@ -1362,7 +1385,7 @@ static void yaffs_fill_inode_from_obj(st
-               inode->i_size = yaffs_get_obj_length(obj);
-               inode->i_blocks = (inode->i_size + 511) >> 9;
--              inode->i_nlink = yaffs_get_obj_link_count(obj);
-+              yaffs_set_nlink(inode, yaffs_get_obj_link_count(obj));
-               T(YAFFS_TRACE_OS,
-                       (TSTR("yaffs_fill_inode mode %x uid %d gid %d size %d count %d\n"),
-@@ -1784,10 +1807,9 @@ static int yaffs_unlink(struct inode *di
-       retVal = yaffs_unlinker(obj, dentry->d_name.name);
-       if (retVal == YAFFS_OK) {
--              dentry->d_inode->i_nlink--;
-+              yaffs_dec_link_count(dentry->d_inode);
-               dir->i_version++;
-               yaffs_gross_unlock(dev);
--              mark_inode_dirty(dentry->d_inode);
-               update_dir_time(dir);
-               return 0;
-       }
-@@ -1818,7 +1840,8 @@ static int yaffs_link(struct dentry *old
-                       obj);
-       if (link) {
--              old_dentry->d_inode->i_nlink = yaffs_get_obj_link_count(obj);
-+              yaffs_set_nlink(old_dentry->d_inode,
-+                              yaffs_get_obj_link_count(obj));
-               d_instantiate(dentry, old_dentry->d_inode);
-               atomic_inc(&old_dentry->d_inode->i_count);
-               T(YAFFS_TRACE_OS,
-@@ -1937,11 +1960,9 @@ static int yaffs_rename(struct inode *ol
-       yaffs_gross_unlock(dev);
-       if (retVal == YAFFS_OK) {
--              if (target) {
--                      new_dentry->d_inode->i_nlink--;
--                      mark_inode_dirty(new_dentry->d_inode);
--              }
--              
-+              if (target)
-+                      yaffs_dec_link_count(new_dentry->d_inode);
-+
-               update_dir_time(old_dir);
-               if(old_dir != new_dir)
-                       update_dir_time(new_dir);