From: Erez_Zadok Date: Fri, 1 Jun 2007 03:13:14 +0000 (-0400) Subject: debugging: indent code properly and cleanups X-Git-Url: https://git.fsl.cs.sunysb.edu/?a=commitdiff_plain;h=12c76e4084fce848bd0609a4d13cd4ab51e7e7e0;p=unionfs-2.6.33.y.git 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 --- diff --git a/fs/unionfs/debug.c b/fs/unionfs/debug.c index ab168cc6909..b99bc46e76f 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; is_root)->lower_paths[i].mnt; printk("%d:", (mnt ? atomic_read(&mnt->mnt_count) : -99)); }