This is no longer needed, as we don't have upper and lower pages. Plus this
was racy, requiring the unexported inode_lock variable.
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
---
fs/unionfs/dentry.c | 11 -----------
fs/unionfs/super.c | 8 +++++---
2 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/fs/unionfs/dentry.c b/fs/unionfs/dentry.c
index 5e498c2..ee0da4f 100644
--- a/fs/unionfs/dentry.c
+++ b/fs/unionfs/dentry.c
@@ -273,17 +273,6 @@ static inline void purge_inode_data(struct inode *inode)
*/
}
-void purge_sb_data(struct super_block *sb)
-{
- struct inode *inode;
-
- list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
- if (inode->i_state & (I_FREEING|I_WILL_FREE))
- continue;
- purge_inode_data(inode);
- }
-}
-
/*
* Revalidate a single file/symlink/special dentry. Assume that info nodes
* of the dentry and its parent are locked. Assume that parent(s) are all
diff --git a/fs/unionfs/super.c b/fs/unionfs/super.c
index 4cddc83..82b4045 100644
--- a/fs/unionfs/super.c
+++ b/fs/unionfs/super.c
@@ -747,10 +747,12 @@ out_no_change:
* function). This revalidation will happen lazily and
* incrementally, as users perform operations on cached inodes. We
* would like to encourage this revalidation to happen sooner if
- * possible, so we try to invalidate as many other pages in our
- * superblock as we can.
+ * possible, so we like to try to invalidate as many other pages in
+ * our superblock as we can. We used to call drop_pagecache_sb() or
+ * a variant thereof, but either method was racy (drop_caches alone
+ * is known to be racy). So now we let the revalidation happen on a
+ * per file basis in ->d_revalidate.
*/
- purge_sb_data(sb);
/* grab new lower super references; release old ones */
for (i = 0; i < new_branches; i++)
--
1.5.2.2
--
| Linus Torvalds | Linux 2.6.27 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Alan Cox | [PATCH 00/80] TTY updates for 2.6.28 |
git: | |
| Linus Torvalds | People unaware of the importance of "git gc"? |
| Linus Torvalds | [PATCH 1/6] diff-lib: use ce_mode_from_stat() rather than messing with modes manua... |
| Joakim Tjernlund | git-svn set-tree bug |
| Robert Collins | Re: VCS comparison table |
| Marcos Laufer | dmesg IBM x3650 OpenBSD 4.3 |
| Richard Stallman | Real men don't attack straw men |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| Samuel Moñux | Cyrus IMAP performance problems [Long] |
| Pekka Enberg | Re: [rfc][patch 3/3] use SLAB_ALIGN_SMP |
| Frithjof Hammer | Re: [LARTC] ifb and ppp |
| Evgeniy Polyakov | [2/3] POHMELFS: Documentation. |
| Maxim Levitsky | How I can reset TCP sockets after long suspend/resume cyscle |
| How to make my PCIE ATA storage device running in Linux | 5 hours ago | Linux general |
| sata/ide timeout errors on asus server-mb | 9 hours ago | Linux kernel |
| Shared swap partition | 9 hours ago | Linux general |
| usb mic not detected | 14 hours ago | Applications and Utilities |
| Problem in Inserting a module | 14 hours ago | Linux kernel |
| Treason Uncloaked | 20 hours ago | Linux kernel |
| high memory | 3 days ago | Linux kernel |
| semaphore access speed | 3 days ago | Applications and Utilities |
| the kernel how to power off the machine | 3 days ago | Linux kernel |
| Easter Eggs in windows XP | 3 days ago | Windows |
