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