GIT: unionfs2-2.6.27.y: debugging: indent code properly and cleanups

Erez Zadok ezk at fsl.cs.sunysb.edu
Thu Aug 12 23:16:34 EDT 2010


commit 2ca22e26c247d4811f2c54bec6ad0449921e7676
Author: Erez_Zadok <ezk at cs.sunysb.edu>
Date:   Thu May 31 23:13:14 2007 -0400

    debugging: indent code properly and cleanups
    
    Also make PRINT_CALLER look like a function.
    Fix one small bug in __show_branch_counts.
    
    Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>

diff --git a/fs/unionfs/debug.c b/fs/unionfs/debug.c
index ab168cc..b99bc46 100644
--- a/fs/unionfs/debug.c
+++ b/fs/unionfs/debug.c
@@ -17,7 +17,7 @@
  */
 
 /* it's always useful to know what part of the code called us */
-#define PRINT_CALLER				\
+#define PRINT_CALLER()				\
 do {						\
   if (!printed_caller) {			\
     printk("PC:%s:%s:%d\n",fname,fxn,line);	\
@@ -37,316 +37,351 @@ do {						\
 void __unionfs_check_inode(const struct inode *inode,
 			   const char *fname, const char *fxn, int line)
 {
-  int bindex;
-  int istart, iend;
-  struct inode *lower_inode;
-  struct super_block *sb;
-  int printed_caller = 0;
+	int bindex;
+	int istart, iend;
+	struct inode *lower_inode;
+	struct super_block *sb;
+	int printed_caller = 0;
 
-  /* for inodes now */
-  BUG_ON(!inode);
-  sb = inode->i_sb;
-  istart = ibstart(inode);
-  iend = ibend(inode);
-  if (istart > iend) {
-    PRINT_CALLER;
-    printk(" Ci0: inode=%p istart/end=%d:%d\n",
-	   inode, istart, iend);
-  }
-  if ((istart == -1 && iend != -1) ||
-      (istart != -1 && iend == -1)) {
-    PRINT_CALLER;
-    printk(" Ci1: inode=%p istart/end=%d:%d\n",
-	   inode, istart, iend);
-  }
-  if (!S_ISDIR(inode->i_mode)) {
-    if (iend != istart) {
-      PRINT_CALLER;
-      printk(" Ci2: inode=%p istart=%d iend=%d\n",
-	     inode, istart, iend);
-    }
-  }
+	/* for inodes now */
+	BUG_ON(!inode);
+	sb = inode->i_sb;
+	istart = ibstart(inode);
+	iend = ibend(inode);
+	if (istart > iend) {
+		PRINT_CALLER();
+		printk(" Ci0: inode=%p istart/end=%d:%d\n",
+		       inode, istart, iend);
+	}
+	if ((istart == -1 && iend != -1) ||
+	    (istart != -1 && iend == -1)) {
+		PRINT_CALLER();
+		printk(" Ci1: inode=%p istart/end=%d:%d\n",
+		       inode, istart, iend);
+	}
+	if (!S_ISDIR(inode->i_mode)) {
+		if (iend != istart) {
+			PRINT_CALLER();
+			printk(" Ci2: inode=%p istart=%d iend=%d\n",
+			       inode, istart, iend);
+		}
+	}
 
-  for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
-    if (!UNIONFS_I(inode)) {
-      PRINT_CALLER;
-      printk(" Ci3: no inode_info %p\n", inode);
-      return;
-    }
-    if (!UNIONFS_I(inode)->lower_inodes) {
-      PRINT_CALLER;
-      printk(" Ci4: no lower_inodes %p\n", inode);
-      return;
-    }
-    lower_inode = unionfs_lower_inode_idx(inode, bindex);
-    if (lower_inode) {
-      if (bindex < istart || bindex > iend) {
-	PRINT_CALLER;
-	printk(" Ci5: inode/linode=%p:%p bindex=%d istart/end=%d:%d\n",
-	       inode, lower_inode, bindex, istart, iend);
-      } else if ((int)lower_inode == 0x5a5a5a5a) { /* freed inode! */
-	PRINT_CALLER;
-	printk(" Ci6: inode/linode=%p:%p bindex=%d istart/end=%d:%d\n",
-	       inode, lower_inode, bindex, istart, iend);
-      }
-    } else {	/* lower_inode == NULL */
-      if (bindex >= istart && bindex <= iend) {
-	/*
-	 * directories can have NULL lower inodes in b/t start/end, but
-	 * NOT if at the start/end range.
-	 */
-	if (!(S_ISDIR(inode->i_mode) && bindex > istart && bindex < iend)) {
-	  PRINT_CALLER;
-	  printk(" Ci7: inode/linode=%p:%p bindex=%d istart/end=%d:%d\n",
-		 inode, lower_inode, bindex, istart, iend);
+	for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
+		if (!UNIONFS_I(inode)) {
+			PRINT_CALLER();
+			printk(" Ci3: no inode_info %p\n", inode);
+			return;
+		}
+		if (!UNIONFS_I(inode)->lower_inodes) {
+			PRINT_CALLER();
+			printk(" Ci4: no lower_inodes %p\n", inode);
+			return;
+		}
+		lower_inode = unionfs_lower_inode_idx(inode, bindex);
+		if (lower_inode) {
+			if (bindex < istart || bindex > iend) {
+				PRINT_CALLER();
+				printk(" Ci5: inode/linode=%p:%p bindex=%d "
+				       "istart/end=%d:%d\n", inode,
+				       lower_inode, bindex, istart, iend);
+			} else if ((int)lower_inode == 0x5a5a5a5a) {
+				/* freed inode! */
+				PRINT_CALLER();
+				printk(" Ci6: inode/linode=%p:%p bindex=%d "
+				       "istart/end=%d:%d\n", inode,
+				       lower_inode, bindex, istart, iend);
+			}
+		} else {	/* lower_inode == NULL */
+			if (bindex >= istart && bindex <= iend) {
+				/*
+				 * directories can have NULL lower inodes in
+				 * b/t start/end, but NOT if at the
+				 * start/end range.
+				 */
+				if (!(S_ISDIR(inode->i_mode) &&
+				      bindex > istart && bindex < iend)) {
+					PRINT_CALLER();
+					printk(" Ci7: inode/linode=%p:%p "
+					       "bindex=%d istart/end=%d:%d\n",
+					       inode, lower_inode, bindex,
+					       istart, iend);
+				}
+			}
+		}
 	}
-      }
-    }
-  }
 }
 
 void __unionfs_check_dentry(const struct dentry *dentry,
 			    const char *fname, const char *fxn, int line)
 {
-  int bindex;
-  int dstart, dend, istart, iend;
-  struct dentry *lower_dentry;
-  struct inode *inode, *lower_inode;
-  struct super_block *sb;
-  struct vfsmount *lower_mnt;
-  int printed_caller = 0;
+	int bindex;
+	int dstart, dend, istart, iend;
+	struct dentry *lower_dentry;
+	struct inode *inode, *lower_inode;
+	struct super_block *sb;
+	struct vfsmount *lower_mnt;
+	int printed_caller = 0;
 
-  BUG_ON(!dentry);
-  sb = dentry->d_sb;
-  inode = dentry->d_inode;
-  dstart = dbstart(dentry);
-  dend = dbend(dentry);
-  BUG_ON(dstart > dend);
+	BUG_ON(!dentry);
+	sb = dentry->d_sb;
+	inode = dentry->d_inode;
+	dstart = dbstart(dentry);
+	dend = dbend(dentry);
+	BUG_ON(dstart > dend);
 
-  if ((dstart == -1 && dend != -1) ||
-      (dstart != -1 && dend == -1)) {
-    PRINT_CALLER;
-    printk(" CD0: dentry=%p dstart/end=%d:%d\n",
-	   dentry, dstart, dend);
-  }
-  /*
-   * check for NULL dentries inside the start/end range, or
-   * non-NULL dentries outside the start/end range.
-   */
-  for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
-    lower_dentry = unionfs_lower_dentry_idx(dentry, bindex);
-    if (lower_dentry) {
-      if (bindex < dstart || bindex > dend) {
-	PRINT_CALLER;
-	printk(" CD1: dentry/lower=%p:%p(%p) bindex=%d dstart/end=%d:%d\n",
-	       dentry, lower_dentry,
-	       (lower_dentry ? lower_dentry->d_inode : (void *) 0xffffffff),
-	       bindex, dstart, dend);
-      }
-    } else {	/* lower_dentry == NULL */
-      if (bindex >= dstart && bindex <= dend) {
+	if ((dstart == -1 && dend != -1) ||
+	    (dstart != -1 && dend == -1)) {
+		PRINT_CALLER();
+		printk(" CD0: dentry=%p dstart/end=%d:%d\n",
+		       dentry, dstart, dend);
+	}
 	/*
-	 * Directories can have NULL lower inodes in b/t start/end, but NOT
-	 * if at the start/end range.  Ignore this rule, however, if this is
-	 * a NULL dentry or a deleted dentry.
+	 * check for NULL dentries inside the start/end range, or
+	 * non-NULL dentries outside the start/end range.
 	 */
-	if (!d_deleted((struct dentry *) dentry) &&
-	    inode && !(inode && S_ISDIR(inode->i_mode) &&
-		       bindex > dstart && bindex < dend)) {
-	  PRINT_CALLER;
-	  printk(" CD2: dentry/lower=%p:%p(%p) bindex=%d dstart/end=%d:%d\n",
-		 dentry, lower_dentry,
-		 (lower_dentry ? lower_dentry->d_inode : (void *) 0xffffffff),
-		 bindex, dstart, dend);
+	for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
+		lower_dentry = unionfs_lower_dentry_idx(dentry, bindex);
+		if (lower_dentry) {
+			if (bindex < dstart || bindex > dend) {
+				PRINT_CALLER();
+				printk(" CD1: dentry/lower=%p:%p(%p) "
+				       "bindex=%d dstart/end=%d:%d\n",
+				       dentry, lower_dentry,
+				       (lower_dentry ? lower_dentry->d_inode :
+					(void *) 0xffffffff),
+				       bindex, dstart, dend);
+			}
+		} else {	/* lower_dentry == NULL */
+			if (bindex >= dstart && bindex <= dend) {
+				/*
+				 * Directories can have NULL lower inodes in
+				 * b/t start/end, but NOT if at the
+				 * start/end range.  Ignore this rule,
+				 * however, if this is a NULL dentry or a
+				 * deleted dentry.
+				 */
+				if (!d_deleted((struct dentry *) dentry) &&
+				    inode &&
+				    !(inode && S_ISDIR(inode->i_mode) &&
+				      bindex > dstart && bindex < dend)) {
+					PRINT_CALLER();
+					printk(" CD2: dentry/lower=%p:%p(%p) "
+					       "bindex=%d dstart/end=%d:%d\n",
+					       dentry, lower_dentry,
+					       (lower_dentry ?
+						lower_dentry->d_inode :
+						(void *) 0xffffffff),
+					       bindex, dstart, dend);
+				}
+			}
+		}
 	}
-      }
-    }
-  }
 
-  /* check for vfsmounts same as for dentries */
-  for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
-    lower_mnt = unionfs_lower_mnt_idx(dentry, bindex);
-    if (lower_mnt) {
-      if (bindex < dstart || bindex > dend) {
-	PRINT_CALLER;
-	printk(" CM0: dentry/lmnt=%p:%p bindex=%d dstart/end=%d:%d\n",
-	       dentry, lower_mnt, bindex, dstart, dend);
-      }
-    } else {	/* lower_mnt == NULL */
-      if (bindex >= dstart && bindex <= dend) {
-	/*
-	 * Directories can have NULL lower inodes in b/t start/end, but NOT
-	 * if at the start/end range.  Ignore this rule, however, if this is
-	 * a NULL dentry.
-	 */
-	if (inode && !(inode && S_ISDIR(inode->i_mode) &&
-		       bindex > dstart && bindex < dend)) {
-	  PRINT_CALLER;
-	  printk(" CM1: dentry/lmnt=%p:%p bindex=%d dstart/end=%d:%d\n",
-		 dentry, lower_mnt, bindex, dstart, dend);
+	/* check for vfsmounts same as for dentries */
+	for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
+		lower_mnt = unionfs_lower_mnt_idx(dentry, bindex);
+		if (lower_mnt) {
+			if (bindex < dstart || bindex > dend) {
+				PRINT_CALLER();
+				printk(" CM0: dentry/lmnt=%p:%p bindex=%d "
+				       "dstart/end=%d:%d\n", dentry,
+				       lower_mnt, bindex, dstart, dend);
+			}
+		} else {	/* lower_mnt == NULL */
+			if (bindex >= dstart && bindex <= dend) {
+				/*
+				 * Directories can have NULL lower inodes in
+				 * b/t start/end, but NOT if at the
+				 * start/end range.  Ignore this rule,
+				 * however, if this is a NULL dentry.
+				 */
+				if (inode &&
+				    !(inode && S_ISDIR(inode->i_mode) &&
+				      bindex > dstart && bindex < dend)) {
+					PRINT_CALLER();
+					printk(" CM1: dentry/lmnt=%p:%p "
+					       "bindex=%d dstart/end=%d:%d\n",
+					       dentry, lower_mnt, bindex,
+					       dstart, dend);
+				}
+			}
+		}
+	}
+
+	/* for inodes now */
+	if (!inode)
+		return;
+	istart = ibstart(inode);
+	iend = ibend(inode);
+	BUG_ON(istart > iend);
+	if ((istart == -1 && iend != -1) ||
+	    (istart != -1 && iend == -1)) {
+		PRINT_CALLER();
+		printk(" CI0: dentry/inode=%p:%p istart/end=%d:%d\n",
+		       dentry, inode, istart, iend);
+	}
+	if (istart != dstart) {
+		PRINT_CALLER();
+		printk(" CI1: dentry/inode=%p:%p istart=%d dstart=%d\n",
+		       dentry, inode, istart, dstart);
+	}
+	if (iend != dend) {
+		PRINT_CALLER();
+		printk(" CI2: dentry/inode=%p:%p iend=%d dend=%d\n",
+		       dentry, inode, iend, dend);
 	}
-      }
-    }
-  }
 
-  /* for inodes now */
-  if (!inode)
-    return;
-  istart = ibstart(inode);
-  iend = ibend(inode);
-  BUG_ON(istart > iend);
-  if ((istart == -1 && iend != -1) ||
-      (istart != -1 && iend == -1)) {
-    PRINT_CALLER;
-    printk(" CI0: dentry/inode=%p:%p istart/end=%d:%d\n",
-	   dentry, inode, istart, iend);
-  }
-  if (istart != dstart) {
-    PRINT_CALLER;
-    printk(" CI1: dentry/inode=%p:%p istart=%d dstart=%d\n",
-	   dentry, inode, istart, dstart);
-  }
-  if (iend != dend) {
-    PRINT_CALLER;
-    printk(" CI2: dentry/inode=%p:%p iend=%d dend=%d\n",
-	   dentry, inode, iend, dend);
-  }
+	if (!S_ISDIR(inode->i_mode)) {
+		if (dend != dstart) {
+			PRINT_CALLER();
+			printk(" CI3: dentry/inode=%p:%p dstart=%d dend=%d\n",
+			       dentry, inode, dstart, dend);
+		}
+		if (iend != istart) {
+			PRINT_CALLER();
+			printk(" CI4: dentry/inode=%p:%p istart=%d iend=%d\n",
+			       dentry, inode, istart, iend);
+		}
+	}
 
-  if (!S_ISDIR(inode->i_mode)) {
-    if (dend != dstart) {
-      PRINT_CALLER;
-      printk(" CI3: dentry/inode=%p:%p dstart=%d dend=%d\n",
-	     dentry, inode, dstart, dend);
-    }
-    if (iend != istart) {
-      PRINT_CALLER;
-      printk(" CI4: dentry/inode=%p:%p istart=%d iend=%d\n",
-	     dentry, inode, istart, iend);
-    }
-  }
+	for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
+		lower_inode = unionfs_lower_inode_idx(inode, bindex);
+		if (lower_inode) {
+			if (bindex < istart || bindex > iend) {
+				PRINT_CALLER();
+				printk(" CI5: dentry/linode=%p:%p bindex=%d "
+				       "istart/end=%d:%d\n", dentry,
+				       lower_inode, bindex, istart, iend);
+			} else if ((int)lower_inode == 0x5a5a5a5a) {
+				/* freed inode! */
+				PRINT_CALLER();
+				printk(" CI6: dentry/linode=%p:%p bindex=%d "
+				       "istart/end=%d:%d\n", dentry,
+				       lower_inode, bindex, istart, iend);
+			}
+		} else {	/* lower_inode == NULL */
+			if (bindex >= istart && bindex <= iend) {
+				/*
+				 * directories can have NULL lower inodes in
+				 * b/t start/end, but NOT if at the
+				 * start/end range.
+				 */
+				if (!(S_ISDIR(inode->i_mode) &&
+				      bindex > istart && bindex < iend)) {
+					PRINT_CALLER();
+					printk(" CI7: dentry/linode=%p:%p "
+					       "bindex=%d istart/end=%d:%d\n",
+					       dentry, lower_inode, bindex,
+					       istart, iend);
+				}
+			}
+		}
+	}
 
-  for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
-    lower_inode = unionfs_lower_inode_idx(inode, bindex);
-    if (lower_inode) {
-      if (bindex < istart || bindex > iend) {
-	PRINT_CALLER;
-	printk(" CI5: dentry/linode=%p:%p bindex=%d istart/end=%d:%d\n",
-	       dentry, lower_inode, bindex, istart, iend);
-      } else if ((int)lower_inode == 0x5a5a5a5a) { /* freed inode! */
-	PRINT_CALLER;
-	printk(" CI6: dentry/linode=%p:%p bindex=%d istart/end=%d:%d\n",
-	       dentry, lower_inode, bindex, istart, iend);
-      }
-    } else {	/* lower_inode == NULL */
-      if (bindex >= istart && bindex <= iend) {
 	/*
-	 * directories can have NULL lower inodes in b/t start/end, but
-	 * NOT if at the start/end range.
+	 * If it's a directory, then intermediate objects b/t start/end can
+	 * be NULL.  But, check that all three are NULL: lower dentry, mnt,
+	 * and inode.
 	 */
-	if (!(S_ISDIR(inode->i_mode) && bindex > istart && bindex < iend)) {
-	  PRINT_CALLER;
-	  printk(" CI7: dentry/linode=%p:%p bindex=%d istart/end=%d:%d\n",
-		 dentry, lower_inode, bindex, istart, iend);
-	}
-      }
-    }
-  }
-
-  /*
-   * If it's a directory, then intermediate objects b/t start/end can be NULL.
-   * But, check that all three are NULL: lower dentry, mnt, and inode.
-   */
-  if (S_ISDIR(inode->i_mode))
-    for (bindex = dstart+1; bindex < dend-1; bindex++) {
-      lower_inode = unionfs_lower_inode_idx(inode, bindex);
-      lower_dentry = unionfs_lower_dentry_idx(dentry, bindex);
-      lower_mnt = unionfs_lower_mnt_idx(dentry, bindex);
-      if (!((lower_inode && lower_dentry && lower_mnt) ||
-	    (!lower_inode && !lower_dentry && !lower_mnt)))
-	printk(" Cx: lmnt/ldentry/linode=%p:%p:%p bindex=%d dstart/end=%d:%d\n",
-	       lower_mnt, lower_dentry, lower_inode, bindex, dstart, dend);
-    }
+	if (S_ISDIR(inode->i_mode))
+		for (bindex = dstart+1; bindex < dend-1; bindex++) {
+			lower_inode = unionfs_lower_inode_idx(inode, bindex);
+			lower_dentry = unionfs_lower_dentry_idx(dentry,
+								bindex);
+			lower_mnt = unionfs_lower_mnt_idx(dentry, bindex);
+			if (!((lower_inode && lower_dentry && lower_mnt) ||
+			      (!lower_inode && !lower_dentry && !lower_mnt)))
+				printk(" Cx: lmnt/ldentry/linode=%p:%p:%p "
+				       "bindex=%d dstart/end=%d:%d\n",
+				       lower_mnt, lower_dentry, lower_inode,
+				       bindex, dstart, dend);
+		}
 }
 
 void __unionfs_check_file(const struct file *file,
-			const char *fname, const char *fxn, int line)
+			  const char *fname, const char *fxn, int line)
 {
-  int bindex;
-  int dstart, dend, fstart, fend;
-  struct dentry *dentry;
-  struct file *lower_file;
-  struct inode *inode;
-  struct super_block *sb;
-  int printed_caller = 0;
+	int bindex;
+	int dstart, dend, fstart, fend;
+	struct dentry *dentry;
+	struct file *lower_file;
+	struct inode *inode;
+	struct super_block *sb;
+	int printed_caller = 0;
 
-  BUG_ON(!file);
-  dentry = file->f_dentry;
-  sb = dentry->d_sb;
-  dstart = dbstart(dentry);
-  dend = dbend(dentry);
-  BUG_ON(dstart > dend);
-  fstart = fbstart(file);
-  fend = fbend(file);
-  BUG_ON(fstart > fend);
+	BUG_ON(!file);
+	dentry = file->f_dentry;
+	sb = dentry->d_sb;
+	dstart = dbstart(dentry);
+	dend = dbend(dentry);
+	BUG_ON(dstart > dend);
+	fstart = fbstart(file);
+	fend = fbend(file);
+	BUG_ON(fstart > fend);
 
-  if ((fstart == -1 && fend != -1) ||
-      (fstart != -1 && fend == -1)) {
-    PRINT_CALLER;
-    printk(" CF0: file/dentry=%p:%p fstart/end=%d:%d\n",
-	   file, dentry, fstart, fend);
-  }
-  if (fstart != dstart) {
-    PRINT_CALLER;
-    printk(" CF1: file/dentry=%p:%p fstart=%d dstart=%d\n",
-	   file, dentry, fstart, dstart);
-  }
-  if (fend != dend) {
-    PRINT_CALLER;
-    printk(" CF2: file/dentry=%p:%p fend=%d dend=%d\n",
-	   file, dentry, fend, dend);
-  }
-  inode = dentry->d_inode;
-  if (!S_ISDIR(inode->i_mode)) {
-    if (fend != fstart) {
-      PRINT_CALLER;
-      printk(" CF3: file/inode=%p:%p fstart=%d fend=%d\n",
-	     file, inode, fstart, fend);
-    }
-    if (dend != dstart) {
-      PRINT_CALLER;
-      printk(" CF4: file/dentry=%p:%p dstart=%d dend=%d\n",
-	     file, dentry, dstart, dend);
-    }
-  }
+	if ((fstart == -1 && fend != -1) ||
+	    (fstart != -1 && fend == -1)) {
+		PRINT_CALLER();
+		printk(" CF0: file/dentry=%p:%p fstart/end=%d:%d\n",
+		       file, dentry, fstart, fend);
+	}
+	if (fstart != dstart) {
+		PRINT_CALLER();
+		printk(" CF1: file/dentry=%p:%p fstart=%d dstart=%d\n",
+		       file, dentry, fstart, dstart);
+	}
+	if (fend != dend) {
+		PRINT_CALLER();
+		printk(" CF2: file/dentry=%p:%p fend=%d dend=%d\n",
+		       file, dentry, fend, dend);
+	}
+	inode = dentry->d_inode;
+	if (!S_ISDIR(inode->i_mode)) {
+		if (fend != fstart) {
+			PRINT_CALLER();
+			printk(" CF3: file/inode=%p:%p fstart=%d fend=%d\n",
+			       file, inode, fstart, fend);
+		}
+		if (dend != dstart) {
+			PRINT_CALLER();
+			printk(" CF4: file/dentry=%p:%p dstart=%d dend=%d\n",
+			       file, dentry, dstart, dend);
+		}
+	}
 
-  /*
-   * check for NULL dentries inside the start/end range, or
-   * non-NULL dentries outside the start/end range.
-   */
-  for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
-    lower_file = unionfs_lower_file_idx(file, bindex);
-    if (lower_file) {
-      if (bindex < fstart || bindex > fend) {
-	PRINT_CALLER;
-	printk(" CF5: file/lower=%p:%p bindex=%d fstart/end=%d:%d\n",
-	       file, lower_file, bindex, fstart, fend);
-      }
-    } else {	/* lower_file == NULL */
-      if (bindex >= fstart && bindex <= fend) {
 	/*
-	 * directories can have NULL lower inodes in b/t start/end, but
-	 * NOT if at the start/end range.
+	 * check for NULL dentries inside the start/end range, or
+	 * non-NULL dentries outside the start/end range.
 	 */
-	if (!(S_ISDIR(inode->i_mode) && bindex > fstart && bindex < fend)) {
-	  PRINT_CALLER;
-	  printk(" CF6: file/lower=%p:%p bindex=%d fstart/end=%d:%d\n",
-		 file, lower_file, bindex, fstart, fend);
+	for (bindex = sbstart(sb); bindex < sbmax(sb); bindex++) {
+		lower_file = unionfs_lower_file_idx(file, bindex);
+		if (lower_file) {
+			if (bindex < fstart || bindex > fend) {
+				PRINT_CALLER();
+				printk(" CF5: file/lower=%p:%p bindex=%d fstart/end=%d:%d\n",
+				       file, lower_file, bindex, fstart, fend);
+			}
+		} else {	/* lower_file == NULL */
+			if (bindex >= fstart && bindex <= fend) {
+				/*
+				 * directories can have NULL lower inodes in
+				 * b/t start/end, but NOT if at the
+				 * start/end range.
+				 */
+				if (!(S_ISDIR(inode->i_mode) &&
+				      bindex > fstart && bindex < fend)) {
+					PRINT_CALLER();
+					printk(" CF6: file/lower=%p:%p "
+					       "bindex=%d fstart/end=%d:%d\n",
+					       file, lower_file, bindex,
+					       fstart, fend);
+				}
+			}
+		}
 	}
-      }
-    }
-  }
 
-  __unionfs_check_dentry(dentry,fname,fxn,line);
+	__unionfs_check_dentry(dentry,fname,fxn,line);
 }
 
 /* useful to track vfsmount leaks that could cause EBUSY on unmount */
@@ -357,7 +392,7 @@ void __show_branch_counts(const struct super_block *sb,
 	struct vfsmount *mnt;
 
 	printk("BC:");
-	for (i=0; i<4; i++) {
+	for (i=0; i<sbmax(sb); i++) {
 		mnt = UNIONFS_D(sb->s_root)->lower_paths[i].mnt;
 		printk("%d:", (mnt ? atomic_read(&mnt->mnt_count) : -99));
 	}


More information about the unionfs-cvs mailing list