forgot to include patch against latest cvs
Index: inode.c
===================================================================
RCS file: /home/spotter/unionfs/2/unionfs/unionfs/inode.c,v
retrieving revision 1.277
diff -u -r1.277 inode.c
--- inode.c     16 Jan 2007 20:35:44 -0000      1.277
+++ inode.c     17 Jan 2007 16:21:50 -0000
@@ -38,7 +38,7 @@
        struct dentry *whiteout_dentry = NULL;
        struct dentry *new_hidden_dentry;
        struct dentry *hidden_parent_dentry = NULL;
-       int bindex = 0, bstart, bend, bopaque;
+       int bindex = 0, bstart, pbstart, pbend, pbopaque;
        char *name = NULL;
 
        print_entry_location();
@@ -47,14 +47,15 @@
 
        /* We start out in the leftmost branch. */
        bstart = dbstart(dentry);
-       bend = dbend(dentry);
-       bopaque = dbopaque(dentry);
+       pbstart = dbstart(dentry->d_parent);
+       pbend = dbend(dentry->d_parent);
+       pbopaque = dbopaque(dentry->d_parent);
        hidden_dentry = dtohd(dentry);
 
-       if ((bopaque != -1) && (bopaque < bend))
-               bend = bopaque;
+       if ((pbopaque != -1) && (pbopaque < pbend))
+               pbend = pbopaque;
 
-       if (bstart != bend) {
+       if (pbstart != pbend) {
                /* check if whiteout exists in this branch, i.e. lookup .wh.foo 
first */
                name = alloc_whname(dentry->d_name.name, dentry->d_name.len);
                if (IS_ERR(name)) {
@@ -231,20 +232,20 @@
        struct dentry *hidden_dir_dentry = NULL;
        struct dentry *whiteout_dentry;
        char *name = NULL;
-       int bstart, bend, bopaque;
+       int pbstart, pbend, pbopaque;
 
        print_entry_location();
        double_lock_dentry(new_dentry, old_dentry);
 
        hidden_new_dentry = dtohd(new_dentry);
-       bstart = dbstart(new_dentry->d_parent);
-       bend = dbend(new_dentry->d_parent);
-       bopaque = dbopaque(new_dentry->d_parent);
+       pbstart = dbstart(new_dentry->d_parent);
+       pbend = dbend(new_dentry->d_parent);
+       pbopaque = dbopaque(new_dentry->d_parent);
 
-       if ((bopaque != -1) && (bopaque < bend))
-               bend = bopaque;
+       if ((pbopaque != -1) && (pbopaque < pbend))
+               pbend = pbopaque;
 
-       if (bstart != bend) {
+       if (pbstart != pbend) {
                /* check if whiteout exists in the branch of new dentry, i.e. 
lookup
                 * .wh.foo first. If present, delete it */
                name = alloc_whname(new_dentry->d_name.name, 
new_dentry->d_name.len);
@@ -365,7 +366,7 @@
        struct dentry *whiteout_dentry = NULL;
        struct dentry *hidden_dir_dentry = NULL;
        umode_t mode;
-       int bindex = 0, bstart, bend, bopaque;
+       int bindex = 0, bstart, pbstart, pbend, pbopaque;
        char *name = NULL;
 
        print_entry_location();
@@ -374,15 +375,16 @@
 
        /* We start out in the leftmost branch. */
        bstart = dbstart(dentry);
-       bend = dbend(dentry);
-       bopaque = dbopaque(dentry);
+       pbstart = dbstart(dentry->d_parent);
+       pbend = dbend(dentry->d_parent);
+       pbopaque = dbopaque(dentry->d_parent);
 
-       if ((bopaque != -1) && (bopaque < bend))
-               bend = bopaque;
+       if ((pbopaque != -1) && (pbopaque < pbend))
+               pbend = pbopaque;
 
        hidden_dentry = dtohd(dentry);
 
-       if (bstart != bend) {
+       if (pbstart != pbend) {
                /* check if whiteout exists in this branch, i.e. lookup .wh.foo 
first. If present, delete it */
                name = alloc_whname(dentry->d_name.name, dentry->d_name.len);
                if (IS_ERR(name)) {
@@ -495,7 +497,7 @@
        int err = 0;
        struct dentry *hidden_dentry = NULL, *whiteout_dentry = NULL;
        struct dentry *hidden_parent_dentry = NULL;
-       int bindex = 0, bstart, bend, bopaque;
+       int bindex = 0, bstart, pbstart, pbend, pbopaque;
        char *name = NULL;
        int whiteout_unlinked = 0;
        struct sioq_args args;
@@ -504,15 +506,16 @@
        lock_dentry(dentry);
        print_dentry("IN unionfs_mkdir", dentry);
        bstart = dbstart(dentry);
-       bend = dbend(dentry);
-       bopaque = dbopaque(dentry);
+       pbstart = dbstart(dentry->d_parent);
+       pbend = dbend(dentry->d_parent);
+       pbopaque = dbopaque(dentry->d_parent);
 
-       if ((bopaque != -1) && (bopaque < bend))
-               bend = bopaque;
+       if ((pbopaque != -1) && (pbopaque < pbend))
+               pbend = pbopaque;
 
        hidden_dentry = dtohd(dentry);
 
-       if (bstart != bend) {
+       if (pbstart != pbend) {
                // check if whiteout exists in this branch, i.e. lookup .wh.foo 
first
                name = alloc_whname(dentry->d_name.name, dentry->d_name.len);
                if (IS_ERR(name)) {
@@ -636,7 +639,7 @@
        int err = 0;
        struct dentry *hidden_dentry = NULL, *whiteout_dentry = NULL;
        struct dentry *hidden_parent_dentry = NULL;
-       int bindex = 0, bstart, bend, bopaque;
+       int bindex = 0, bstart, pbstart, pbend, pbopaque;
        char *name = NULL;
        int whiteout_unlinked = 0;
 
@@ -644,15 +647,16 @@
        lock_dentry(dentry);
        print_dentry("IN unionfs_mknod", dentry);
        bstart = dbstart(dentry);
-       bend = dbend(dentry);
-       bopaque = dbopaque(dentry);
+       pbstart = dbstart(dentry->d_parent);
+       pbend = dbend(dentry->d_parent);
+       pbopaque = dbopaque(dentry->d_parent);
 
-       if ((bopaque != -1) && (bopaque < bend))
-               bend = bopaque;
+       if ((pbopaque != -1) && (pbopaque < pbend))
+               pbend = pbopaque;
 
        hidden_dentry = dtohd(dentry);
 
-       if (bstart != bend) {
+       if (pbstart != pbend) {
                // check if whiteout exists in this branch, i.e. lookup .wh.foo 
first
                name = alloc_whname(dentry->d_name.name, dentry->d_name.len);
                if (IS_ERR(name)) {
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to