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