commit 55940ef264f9fa14db29ed38412accb5784feddb
Author: Yiannis Pericleous <[EMAIL PROTECTED]>
Date:   Fri Feb 16 17:19:29 2007 -0500

    inode operations purge dir cache

diff --git a/fs/unionfs/inode.c b/fs/unionfs/inode.c
index b14198d..c8da6d1 100644
--- a/fs/unionfs/inode.c
+++ b/fs/unionfs/inode.c
@@ -95,6 +95,8 @@ static int unionfs_create(struct inode *parent, struct dentry 
*dentry,
                        err = odf_lookup(dentry->d_parent, dentry, 
                                ODF_LOOKUP_FILE|ODF_LOOKUP_RMV_WH);
                        if (!err)
+                               err = odf_purge_dir_cache(dentry->d_parent); 
+                       if (!err)
                                err = unionfs_interpose(dentry, parent->i_sb, 
0);
                        if (!err) {
                                fsstack_copy_attr_times(parent,
@@ -288,6 +290,8 @@ static int unionfs_symlink(struct inode *dir, struct dentry 
*dentry,
                                ODF_LOOKUP_FILE|ODF_LOOKUP_RMV_WH);
                        if (!err)
                                err = unionfs_interpose(dentry, dir->i_sb, 0);
+                       if (!err)
+                               err = odf_purge_dir_cache(dentry->d_parent); 
                        if (!err) {
                                fsstack_copy_attr_times(dir,
                                                hidden_dir_dentry->d_inode);
@@ -368,6 +372,9 @@ static int unionfs_mkdir(struct inode *parent, struct 
dentry *dentry, int mode)
                ODF_LOOKUP_DIR|ODF_LOOKUP_RMV_WH|ODF_LOOKUP_OPQ);
        if (err)
                goto out;
+       err = odf_purge_dir_cache(dentry->d_parent);
+       if (err)
+               goto out;
        err = unionfs_interpose(dentry, parent->i_sb, bindex);
        if (!err) {
                fsstack_copy_attr_times(parent,
@@ -436,6 +443,8 @@ static int unionfs_mknod(struct inode *dir, struct dentry 
*dentry, int mode,
                err = odf_lookup(dentry->d_parent, dentry, 
                        ODF_LOOKUP_FILE|ODF_LOOKUP_RMV_WH);
                if (!err)
+                       err = odf_purge_dir_cache(dentry->d_parent); 
+               if (!err)
                        err = unionfs_interpose(dentry, dir->i_sb, 0);
                if (!err) {
                        fsstack_copy_attr_times(dir,
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to