commit 022e0eae72018ede1c35ea56859b93c7a834ca7a
Author: Yiannis Pericleous <[EMAIL PROTECTED]>
Date: Sun May 20 15:29:37 2007 -0400
fixed opaque dirs invariancy issue
diff --git a/fs/unionfs/lookup.c b/fs/unionfs/lookup.c
index
b0898988f9436be39dabc8fa5ba92b2a464fabd7..c571ee498f96cd8c0a7e656c7277e0b80c3ea506
100644
--- a/fs/unionfs/lookup.c
+++ b/fs/unionfs/lookup.c
@@ -296,6 +296,23 @@ out_positive:
err = -ENOENT;
goto out_drop;
}
+
+ /* if the dentry is an opaque dir we must release everything
after the opaqueness branch */
+ else if (S_ISDIR(dentry->d_inode->i_mode) &&
+ odf_get_opaque(dentry->d_sb, dentry) != -1) {
+ for (bindex = dbend(dentry) + 1; bindex <
sbmax(dentry->d_sb); bindex++) {
+ if (unionfs_lower_dentry_idx(dentry, bindex))
+ dput(unionfs_lower_dentry_idx(dentry,
bindex));
+ unionfs_set_lower_dentry_idx(dentry, bindex,
NULL);
+ if (unionfs_lower_mnt_idx(dentry, bindex))
+ unionfs_mntput(dentry, bindex);
+ unionfs_set_lower_mnt_idx(dentry, bindex, NULL);
+ if(unionfs_lower_inode_idx(dentry->d_inode,
bindex))
+
iput(unionfs_lower_inode_idx(dentry->d_inode, bindex));
+ unionfs_set_lower_inode_idx(dentry->d_inode,
bindex, NULL);
+
+ }
+ }
}
goto out;
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs