From ff367a6a34587f7762ee5fefe714efa0118a8ede Mon Sep 17 00:00:00 2001 From: nbd Date: Thu, 17 Mar 2011 19:09:48 +0000 Subject: kernel: replace mini_fo with overlayfs for 2.6.37 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26209 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../210-overlayfs_2.6.37_backport.patch | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 target/linux/generic/patches-2.6.37/210-overlayfs_2.6.37_backport.patch (limited to 'target/linux/generic/patches-2.6.37/210-overlayfs_2.6.37_backport.patch') diff --git a/target/linux/generic/patches-2.6.37/210-overlayfs_2.6.37_backport.patch b/target/linux/generic/patches-2.6.37/210-overlayfs_2.6.37_backport.patch new file mode 100644 index 000000000..b7638c05c --- /dev/null +++ b/target/linux/generic/patches-2.6.37/210-overlayfs_2.6.37_backport.patch @@ -0,0 +1,78 @@ +--- a/fs/overlayfs/overlayfs.c ++++ b/fs/overlayfs/overlayfs.c +@@ -28,13 +28,8 @@ struct ovl_fs { + struct ovl_entry { + struct dentry *__upperdentry; + struct dentry *lowerdentry; +- union { +- struct { +- u64 version; +- bool opaque; +- }; +- struct rcu_head rcu; +- }; ++ u64 version; ++ bool opaque; + }; + + static const char *ovl_whiteout_xattr = "trusted.overlay.whiteout"; +@@ -632,12 +627,6 @@ static const struct file_operations ovl_ + + static const struct inode_operations ovl_dir_inode_operations; + +-static void ovl_entry_free(struct rcu_head *head) +-{ +- struct ovl_entry *oe = container_of(head, struct ovl_entry, rcu); +- kfree(oe); +-} +- + static void ovl_dentry_release(struct dentry *dentry) + { + struct ovl_entry *oe = dentry->d_fsdata; +@@ -645,7 +634,7 @@ static void ovl_dentry_release(struct de + if (oe) { + dput(oe->__upperdentry); + dput(oe->lowerdentry); +- call_rcu(&oe->rcu, ovl_entry_free); ++ kfree(oe); + } + } + +@@ -1338,7 +1327,7 @@ static int ovl_dir_getattr(struct vfsmou + return 0; + } + +-static int ovl_permission(struct inode *inode, int mask, unsigned int flags) ++static int ovl_permission(struct inode *inode, int mask) + { + struct ovl_entry *oe; + struct dentry *alias = NULL; +@@ -1349,8 +1338,6 @@ static int ovl_permission(struct inode * + + if (S_ISDIR(inode->i_mode)) { + oe = inode->i_private; +- } else if (flags & IPERM_FLAG_RCU) { +- return -ECHILD; + } else { + /* + * For non-directories find an alias and get the info +@@ -1377,7 +1364,6 @@ static int ovl_permission(struct inode * + /* Careful in RCU walk mode */ + realinode = ACCESS_ONCE(realdentry->d_inode); + if (!realinode) { +- WARN_ON(!(flags & IPERM_FLAG_RCU)); + return -ENOENT; + } + +@@ -1402,9 +1388,9 @@ static int ovl_permission(struct inode * + } + + if (realinode->i_op->permission) +- err = realinode->i_op->permission(realinode, mask, flags); ++ err = realinode->i_op->permission(realinode, mask); + else +- err = generic_permission(realinode, mask, flags, ++ err = generic_permission(realinode, mask, + realinode->i_op->check_acl); + out_dput: + dput(alias); -- cgit v1.2.3