This is a patch for link(2) and persistent inode number.
It re-uses unionfs inode.
Junjiro Okajima
diff -u -p -r1.1 -r1.2
--- unionfs-20060117-2031/main.c 18 Jan 2006 03:02:19 -0000 1.1
+++ unionfs-20060117-2031/main.c 18 Jan 2006 10:10:22 -0000 1.2
@@ -99,6 +99,10 @@ int unionfs_interpose(struct dentry *den
}
}
+ down(&inode->i_sem);
+ if (atomic_read(&inode->i_count) > 1)
+ goto skip;
+
for (bindex = bstart; bindex <= bend; bindex++) {
hidden_dentry = dtohd_index(dentry, bindex);
if (!hidden_dentry) {
@@ -144,6 +157,7 @@ int unionfs_interpose(struct dentry *den
/* all well, copy inode attributes */
fist_copy_attr_all(inode, hidden_inode);
+ skip:
/* only (our) lookup wants to do a d_add */
switch (flag) {
case INTERPOSE_DEFAULT:
@@ -163,6 +177,7 @@ int unionfs_interpose(struct dentry *den
fist_print_dentry("Leaving unionfs_interpose", dentry);
fist_print_inode("Leaving unionfs_interpose", inode);
+ up(&inode->i_sem);
out:
print_exit_status(err);
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs