Convert use of UFS-specific #ifdef DEBUG to DIAGNOSTIC or INVARIANTS

as appropriate. No functional change intended.

Suggested-by: markj
This commit is contained in:
mckusick 2019-05-28 16:32:04 +00:00
parent 2f2deeb281
commit 447eec25c7
4 changed files with 89 additions and 83 deletions

View File

@ -492,8 +492,10 @@ static int maxclustersearch = 10;
SYSCTL_INT(_vfs_ffs, OID_AUTO, maxclustersearch, CTLFLAG_RW, &maxclustersearch, SYSCTL_INT(_vfs_ffs, OID_AUTO, maxclustersearch, CTLFLAG_RW, &maxclustersearch,
0, "max number of cylinder group to search for contigous blocks"); 0, "max number of cylinder group to search for contigous blocks");
#ifdef DEBUG #ifdef DIAGNOSTIC
static volatile int prtrealloc = 0; static int prtrealloc = 0;
SYSCTL_INT(_debug, OID_AUTO, ffs_prtrealloc, CTLFLAG_RW, &prtrealloc, 0,
"print out FFS filesystem block reallocation operations");
#endif #endif
int int
@ -684,7 +686,7 @@ ffs_reallocblks_ufs1(ap)
* block pointers in the inode and indirect blocks associated * block pointers in the inode and indirect blocks associated
* with the file. * with the file.
*/ */
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf("realloc: ino %ju, lbns %jd-%jd\n\told:", printf("realloc: ino %ju, lbns %jd-%jd\n\told:",
(uintmax_t)ip->i_number, (uintmax_t)ip->i_number,
@ -703,7 +705,7 @@ ffs_reallocblks_ufs1(ap)
if (dbtofsb(fs, buflist->bs_children[i]->b_blkno) != *bap) if (dbtofsb(fs, buflist->bs_children[i]->b_blkno) != *bap)
panic("ffs_reallocblks: alloc mismatch"); panic("ffs_reallocblks: alloc mismatch");
#endif #endif
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf(" %d,", *bap); printf(" %d,", *bap);
#endif #endif
@ -752,7 +754,7 @@ ffs_reallocblks_ufs1(ap)
/* /*
* Last, free the old blocks and assign the new blocks to the buffers. * Last, free the old blocks and assign the new blocks to the buffers.
*/ */
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf("\n\tnew:"); printf("\n\tnew:");
#endif #endif
@ -783,12 +785,12 @@ ffs_reallocblks_ufs1(ap)
if (!ffs_checkblk(ip, dbtofsb(fs, bp->b_blkno), fs->fs_bsize)) if (!ffs_checkblk(ip, dbtofsb(fs, bp->b_blkno), fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 3"); panic("ffs_reallocblks: unallocated block 3");
#endif #endif
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf(" %d,", blkno); printf(" %d,", blkno);
#endif #endif
} }
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) { if (prtrealloc) {
prtrealloc--; prtrealloc--;
printf("\n"); printf("\n");
@ -949,7 +951,7 @@ ffs_reallocblks_ufs2(ap)
* block pointers in the inode and indirect blocks associated * block pointers in the inode and indirect blocks associated
* with the file. * with the file.
*/ */
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf("realloc: ino %ju, lbns %jd-%jd\n\told:", (uintmax_t)ip->i_number, printf("realloc: ino %ju, lbns %jd-%jd\n\told:", (uintmax_t)ip->i_number,
(intmax_t)start_lbn, (intmax_t)end_lbn); (intmax_t)start_lbn, (intmax_t)end_lbn);
@ -967,7 +969,7 @@ ffs_reallocblks_ufs2(ap)
if (dbtofsb(fs, buflist->bs_children[i]->b_blkno) != *bap) if (dbtofsb(fs, buflist->bs_children[i]->b_blkno) != *bap)
panic("ffs_reallocblks: alloc mismatch"); panic("ffs_reallocblks: alloc mismatch");
#endif #endif
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf(" %jd,", (intmax_t)*bap); printf(" %jd,", (intmax_t)*bap);
#endif #endif
@ -1016,7 +1018,7 @@ ffs_reallocblks_ufs2(ap)
/* /*
* Last, free the old blocks and assign the new blocks to the buffers. * Last, free the old blocks and assign the new blocks to the buffers.
*/ */
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf("\n\tnew:"); printf("\n\tnew:");
#endif #endif
@ -1047,12 +1049,12 @@ ffs_reallocblks_ufs2(ap)
if (!ffs_checkblk(ip, dbtofsb(fs, bp->b_blkno), fs->fs_bsize)) if (!ffs_checkblk(ip, dbtofsb(fs, bp->b_blkno), fs->fs_bsize))
panic("ffs_reallocblks: unallocated block 3"); panic("ffs_reallocblks: unallocated block 3");
#endif #endif
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) if (prtrealloc)
printf(" %jd,", (intmax_t)blkno); printf(" %jd,", (intmax_t)blkno);
#endif #endif
} }
#ifdef DEBUG #ifdef DIAGNOSTIC
if (prtrealloc) { if (prtrealloc) {
prtrealloc--; prtrealloc--;
printf("\n"); printf("\n");
@ -3125,11 +3127,11 @@ static SYSCTL_NODE(_vfs_ffs, FFS_SET_INODE, setinode, CTLFLAG_WR,
static SYSCTL_NODE(_vfs_ffs, FFS_SET_BUFOUTPUT, setbufoutput, CTLFLAG_WR, static SYSCTL_NODE(_vfs_ffs, FFS_SET_BUFOUTPUT, setbufoutput, CTLFLAG_WR,
sysctl_ffs_fsck, "Set Buffered Writing for Descriptor"); sysctl_ffs_fsck, "Set Buffered Writing for Descriptor");
#define DEBUG 1 #ifdef DIAGNOSTIC
#ifdef DEBUG
static int fsckcmds = 0; static int fsckcmds = 0;
SYSCTL_INT(_debug, OID_AUTO, fsckcmds, CTLFLAG_RW, &fsckcmds, 0, ""); SYSCTL_INT(_debug, OID_AUTO, ffs_fsckcmds, CTLFLAG_RW, &fsckcmds, 0,
#endif /* DEBUG */ "print out fsck_ffs-based filesystem update commands");
#endif /* DIAGNOSTIC */
static int buffered_write(struct file *, struct uio *, struct ucred *, static int buffered_write(struct file *, struct uio *, struct ucred *,
int, struct thread *); int, struct thread *);
@ -3186,11 +3188,11 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
switch (oidp->oid_number) { switch (oidp->oid_number) {
case FFS_SET_FLAGS: case FFS_SET_FLAGS:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) if (fsckcmds)
printf("%s: %s flags\n", mp->mnt_stat.f_mntonname, printf("%s: %s flags\n", mp->mnt_stat.f_mntonname,
cmd.size > 0 ? "set" : "clear"); cmd.size > 0 ? "set" : "clear");
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if (cmd.size > 0) if (cmd.size > 0)
fs->fs_flags |= (long)cmd.value; fs->fs_flags |= (long)cmd.value;
else else
@ -3198,13 +3200,13 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
case FFS_ADJ_REFCNT: case FFS_ADJ_REFCNT:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust inode %jd link count by %jd\n", printf("%s: adjust inode %jd link count by %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value, mp->mnt_stat.f_mntonname, (intmax_t)cmd.value,
(intmax_t)cmd.size); (intmax_t)cmd.size);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp))) if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp)))
break; break;
ip = VTOI(vp); ip = VTOI(vp);
@ -3219,13 +3221,13 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
case FFS_ADJ_BLKCNT: case FFS_ADJ_BLKCNT:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust inode %jd block count by %jd\n", printf("%s: adjust inode %jd block count by %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value, mp->mnt_stat.f_mntonname, (intmax_t)cmd.value,
(intmax_t)cmd.size); (intmax_t)cmd.size);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp))) if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp)))
break; break;
ip = VTOI(vp); ip = VTOI(vp);
@ -3236,13 +3238,13 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
case FFS_SET_SIZE: case FFS_SET_SIZE:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: set inode %jd size to %jd\n", printf("%s: set inode %jd size to %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value, mp->mnt_stat.f_mntonname, (intmax_t)cmd.value,
(intmax_t)cmd.size); (intmax_t)cmd.size);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp))) if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp)))
break; break;
ip = VTOI(vp); ip = VTOI(vp);
@ -3257,7 +3259,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
/* fall through */ /* fall through */
case FFS_FILE_FREE: case FFS_FILE_FREE:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
if (cmd.size == 1) if (cmd.size == 1)
printf("%s: free %s inode %ju\n", printf("%s: free %s inode %ju\n",
@ -3271,7 +3273,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
(uintmax_t)cmd.value, (uintmax_t)cmd.value,
(uintmax_t)(cmd.value + cmd.size - 1)); (uintmax_t)(cmd.value + cmd.size - 1));
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
while (cmd.size > 0) { while (cmd.size > 0) {
if ((error = ffs_freefile(ump, fs, ump->um_devvp, if ((error = ffs_freefile(ump, fs, ump->um_devvp,
cmd.value, filetype, NULL))) cmd.value, filetype, NULL)))
@ -3282,7 +3284,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
case FFS_BLK_FREE: case FFS_BLK_FREE:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
if (cmd.size == 1) if (cmd.size == 1)
printf("%s: free block %jd\n", printf("%s: free block %jd\n",
@ -3294,7 +3296,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
(intmax_t)cmd.value, (intmax_t)cmd.value,
(intmax_t)cmd.value + cmd.size - 1); (intmax_t)cmd.value + cmd.size - 1);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
blkno = cmd.value; blkno = cmd.value;
blkcnt = cmd.size; blkcnt = cmd.size;
blksize = fs->fs_frag - (blkno % fs->fs_frag); blksize = fs->fs_frag - (blkno % fs->fs_frag);
@ -3317,62 +3319,62 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
* submit deltas when necessary. * submit deltas when necessary.
*/ */
case FFS_ADJ_NDIR: case FFS_ADJ_NDIR:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust number of directories by %jd\n", printf("%s: adjust number of directories by %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
fs->fs_cstotal.cs_ndir += cmd.value; fs->fs_cstotal.cs_ndir += cmd.value;
break; break;
case FFS_ADJ_NBFREE: case FFS_ADJ_NBFREE:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust number of free blocks by %+jd\n", printf("%s: adjust number of free blocks by %+jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
fs->fs_cstotal.cs_nbfree += cmd.value; fs->fs_cstotal.cs_nbfree += cmd.value;
break; break;
case FFS_ADJ_NIFREE: case FFS_ADJ_NIFREE:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust number of free inodes by %+jd\n", printf("%s: adjust number of free inodes by %+jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
fs->fs_cstotal.cs_nifree += cmd.value; fs->fs_cstotal.cs_nifree += cmd.value;
break; break;
case FFS_ADJ_NFFREE: case FFS_ADJ_NFFREE:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust number of free frags by %+jd\n", printf("%s: adjust number of free frags by %+jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
fs->fs_cstotal.cs_nffree += cmd.value; fs->fs_cstotal.cs_nffree += cmd.value;
break; break;
case FFS_ADJ_NUMCLUSTERS: case FFS_ADJ_NUMCLUSTERS:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: adjust number of free clusters by %+jd\n", printf("%s: adjust number of free clusters by %+jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
fs->fs_cstotal.cs_numclusters += cmd.value; fs->fs_cstotal.cs_numclusters += cmd.value;
break; break;
case FFS_SET_CWD: case FFS_SET_CWD:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: set current directory to inode %jd\n", printf("%s: set current directory to inode %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_SHARED, &vp))) if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_SHARED, &vp)))
break; break;
AUDIT_ARG_VNODE1(vp); AUDIT_ARG_VNODE1(vp);
@ -3385,13 +3387,13 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
case FFS_SET_DOTDOT: case FFS_SET_DOTDOT:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: change .. in cwd from %jd to %jd\n", printf("%s: change .. in cwd from %jd to %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value, mp->mnt_stat.f_mntonname, (intmax_t)cmd.value,
(intmax_t)cmd.size); (intmax_t)cmd.size);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
/* /*
* First we have to get and lock the parent directory * First we have to get and lock the parent directory
* to which ".." points. * to which ".." points.
@ -3420,7 +3422,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
case FFS_UNLINK: case FFS_UNLINK:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
char buf[32]; char buf[32];
@ -3429,7 +3431,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
printf("%s: unlink %s (inode %jd)\n", printf("%s: unlink %s (inode %jd)\n",
mp->mnt_stat.f_mntonname, buf, (intmax_t)cmd.size); mp->mnt_stat.f_mntonname, buf, (intmax_t)cmd.size);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
/* /*
* kern_funlinkat will do its own start/finish writes and * kern_funlinkat will do its own start/finish writes and
* they do not nest, so drop ours here. Setting mp == NULL * they do not nest, so drop ours here. Setting mp == NULL
@ -3447,12 +3449,12 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
error = EPERM; error = EPERM;
break; break;
} }
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: update inode %jd\n", printf("%s: update inode %jd\n",
mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); mp->mnt_stat.f_mntonname, (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp))) if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, &vp)))
break; break;
AUDIT_ARG_VNODE1(vp); AUDIT_ARG_VNODE1(vp);
@ -3481,14 +3483,14 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
error = EINVAL; error = EINVAL;
break; break;
} }
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: %s buffered output for descriptor %jd\n", printf("%s: %s buffered output for descriptor %jd\n",
mp->mnt_stat.f_mntonname, mp->mnt_stat.f_mntonname,
cmd.size == 1 ? "enable" : "disable", cmd.size == 1 ? "enable" : "disable",
(intmax_t)cmd.value); (intmax_t)cmd.value);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
if ((error = getvnode(td, cmd.value, if ((error = getvnode(td, cmd.value,
cap_rights_init(&rights, CAP_FSCK), &vfp)) != 0) cap_rights_init(&rights, CAP_FSCK), &vfp)) != 0)
break; break;
@ -3513,12 +3515,12 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
break; break;
default: default:
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("Invalid request %d from fsck\n", printf("Invalid request %d from fsck\n",
oidp->oid_number); oidp->oid_number);
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
error = EINVAL; error = EINVAL;
break; break;
@ -3582,12 +3584,12 @@ buffered_write(fp, uio, active_cred, flags, td)
vput(vp); vput(vp);
foffset_lock_uio(fp, uio, flags); foffset_lock_uio(fp, uio, flags);
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
#ifdef DEBUG #ifdef DIAGNOSTIC
if (fsckcmds) { if (fsckcmds) {
printf("%s: buffered write for block %jd\n", printf("%s: buffered write for block %jd\n",
fs->fs_fsmnt, (intmax_t)btodb(uio->uio_offset)); fs->fs_fsmnt, (intmax_t)btodb(uio->uio_offset));
} }
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
/* /*
* All I/O must be contained within a filesystem block, start on * All I/O must be contained within a filesystem block, start on
* a fragment boundary, and be a multiple of fragments in length. * a fragment boundary, and be a multiple of fragments in length.

View File

@ -70,7 +70,6 @@ __FBSDID("$FreeBSD$");
#include <ufs/ffs/ffs_extern.h> #include <ufs/ffs/ffs_extern.h>
#define KERNCRED thread0.td_ucred #define KERNCRED thread0.td_ucred
#define DEBUG 1
#include "opt_ffs.h" #include "opt_ffs.h"
@ -185,7 +184,7 @@ static int ffs_bp_snapblk(struct vnode *, struct buf *);
*/ */
int dopersistence = 0; int dopersistence = 0;
#ifdef DEBUG #ifdef DIAGNOSTIC
#include <sys/sysctl.h> #include <sys/sysctl.h>
SYSCTL_INT(_debug, OID_AUTO, dopersistence, CTLFLAG_RW, &dopersistence, 0, ""); SYSCTL_INT(_debug, OID_AUTO, dopersistence, CTLFLAG_RW, &dopersistence, 0, "");
static int snapdebug = 0; static int snapdebug = 0;
@ -193,7 +192,7 @@ SYSCTL_INT(_debug, OID_AUTO, snapdebug, CTLFLAG_RW, &snapdebug, 0, "");
int collectsnapstats = 0; int collectsnapstats = 0;
SYSCTL_INT(_debug, OID_AUTO, collectsnapstats, CTLFLAG_RW, &collectsnapstats, SYSCTL_INT(_debug, OID_AUTO, collectsnapstats, CTLFLAG_RW, &collectsnapstats,
0, ""); 0, "");
#endif /* DEBUG */ #endif /* DIAGNOSTIC */
/* /*
* Create a snapshot file and initialize it for the filesystem. * Create a snapshot file and initialize it for the filesystem.
@ -208,7 +207,6 @@ ffs_snapshot(mp, snapfile)
int i, size, len, loc; int i, size, len, loc;
ufs2_daddr_t blockno; ufs2_daddr_t blockno;
uint64_t flag; uint64_t flag;
struct timespec starttime = {0, 0}, endtime;
char saved_nice = 0; char saved_nice = 0;
long redo = 0, snaplistsize = 0; long redo = 0, snaplistsize = 0;
int32_t *lp; int32_t *lp;
@ -225,6 +223,9 @@ ffs_snapshot(mp, snapfile)
struct iovec aiov; struct iovec aiov;
struct snapdata *sn; struct snapdata *sn;
struct ufsmount *ump; struct ufsmount *ump;
#ifdef DIAGNOSTIC
struct timespec starttime = {0, 0}, endtime;
#endif
ump = VFSTOUFS(mp); ump = VFSTOUFS(mp);
fs = ump->um_fs; fs = ump->um_fs;
@ -441,8 +442,10 @@ restart:
error = ENOENT; /* Snapshot file unlinked */ error = ENOENT; /* Snapshot file unlinked */
goto out1; goto out1;
} }
#ifdef DIAGNOSTIC
if (collectsnapstats) if (collectsnapstats)
nanotime(&starttime); nanotime(&starttime);
#endif
/* The last block might have changed. Copy it again to be sure. */ /* The last block might have changed. Copy it again to be sure. */
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(numblks - 1)), error = UFS_BALLOC(vp, lblktosize(fs, (off_t)(numblks - 1)),
@ -560,8 +563,10 @@ loop:
continue; continue;
} }
VI_UNLOCK(xvp); VI_UNLOCK(xvp);
#ifdef DIAGNOSTIC
if (snapdebug) if (snapdebug)
vn_printf(xvp, "ffs_snapshot: busy vnode "); vn_printf(xvp, "ffs_snapshot: busy vnode ");
#endif
if (VOP_GETATTR(xvp, &vat, td->td_ucred) == 0 && if (VOP_GETATTR(xvp, &vat, td->td_ucred) == 0 &&
vat.va_nlink > 0) { vat.va_nlink > 0) {
VOP_UNLOCK(xvp, 0); VOP_UNLOCK(xvp, 0);
@ -693,6 +698,7 @@ out1:
* Resume operation on filesystem. * Resume operation on filesystem.
*/ */
vfs_write_resume(vp->v_mount, VR_START_WRITE | VR_NO_SUSPCLR); vfs_write_resume(vp->v_mount, VR_START_WRITE | VR_NO_SUSPCLR);
#ifdef DIAGNOSTIC
if (collectsnapstats && starttime.tv_sec > 0) { if (collectsnapstats && starttime.tv_sec > 0) {
nanotime(&endtime); nanotime(&endtime);
timespecsub(&endtime, &starttime, &endtime); timespecsub(&endtime, &starttime, &endtime);
@ -700,6 +706,7 @@ out1:
vp->v_mount->mnt_stat.f_mntonname, (long)endtime.tv_sec, vp->v_mount->mnt_stat.f_mntonname, (long)endtime.tv_sec,
endtime.tv_nsec / 1000000, redo, fs->fs_ncg); endtime.tv_nsec / 1000000, redo, fs->fs_ncg);
} }
#endif
if (copy_fs == NULL) if (copy_fs == NULL)
goto out; goto out;
/* /*
@ -1583,9 +1590,11 @@ ffs_snapgone(ip)
break; break;
if (xp != NULL) if (xp != NULL)
vrele(ITOV(ip)); vrele(ITOV(ip));
#ifdef DIAGNOSTIC
else if (snapdebug) else if (snapdebug)
printf("ffs_snapgone: lost snapshot vnode %ju\n", printf("ffs_snapgone: lost snapshot vnode %ju\n",
(uintmax_t)ip->i_number); (uintmax_t)ip->i_number);
#endif
/* /*
* Delete snapshot inode from superblock. Keep list dense. * Delete snapshot inode from superblock. Keep list dense.
*/ */
@ -1849,7 +1858,7 @@ retry:
* claim this block. * claim this block.
*/ */
if (size == fs->fs_bsize) { if (size == fs->fs_bsize) {
#ifdef DEBUG #ifdef DIAGNOSTIC
if (snapdebug) if (snapdebug)
printf("%s %ju lbn %jd from inum %ju\n", printf("%s %ju lbn %jd from inum %ju\n",
"Grabonremove: snapino", "Grabonremove: snapino",
@ -1894,7 +1903,7 @@ retry:
td->td_pflags &= ~TDP_COWINPROGRESS; td->td_pflags &= ~TDP_COWINPROGRESS;
if (error) if (error)
break; break;
#ifdef DEBUG #ifdef DIAGNOSTIC
if (snapdebug) if (snapdebug)
printf("%s%ju lbn %jd %s %ju size %ld to blkno %jd\n", printf("%s%ju lbn %jd %s %ju size %ld to blkno %jd\n",
"Copyonremove: snapino ", (uintmax_t)ip->i_number, "Copyonremove: snapino ", (uintmax_t)ip->i_number,
@ -2384,7 +2393,7 @@ ffs_copyonwrite(devvp, bp)
td->td_pflags &= ~TDP_COWINPROGRESS; td->td_pflags &= ~TDP_COWINPROGRESS;
if (error) if (error)
break; break;
#ifdef DEBUG #ifdef DIAGNOSTIC
if (snapdebug) { if (snapdebug) {
printf("Copyonwrite: snapino %ju lbn %jd for ", printf("Copyonwrite: snapino %ju lbn %jd for ",
(uintmax_t)ip->i_number, (intmax_t)lbn); (uintmax_t)ip->i_number, (intmax_t)lbn);

View File

@ -48,13 +48,6 @@ __FBSDID("$FreeBSD$");
#include "opt_quota.h" #include "opt_quota.h"
#include "opt_ddb.h" #include "opt_ddb.h"
/*
* For now we want the safety net that the DEBUG flag provides.
*/
#ifndef DEBUG
#define DEBUG
#endif
#include <sys/param.h> #include <sys/param.h>
#include <sys/kernel.h> #include <sys/kernel.h>
#include <sys/systm.h> #include <sys/systm.h>
@ -998,7 +991,7 @@ MTX_SYSINIT(softdep_lock, &lk, "Global Softdep Lock", MTX_DEF);
* Worklist queue management. * Worklist queue management.
* These routines require that the lock be held. * These routines require that the lock be held.
*/ */
#ifndef /* NOT */ DEBUG #ifndef /* NOT */ INVARIANTS
#define WORKLIST_INSERT(head, item) do { \ #define WORKLIST_INSERT(head, item) do { \
(item)->wk_state |= ONWORKLIST; \ (item)->wk_state |= ONWORKLIST; \
LIST_INSERT_HEAD(head, item, wk_list); \ LIST_INSERT_HEAD(head, item, wk_list); \
@ -1010,7 +1003,7 @@ MTX_SYSINIT(softdep_lock, &lk, "Global Softdep Lock", MTX_DEF);
#define WORKLIST_INSERT_UNLOCKED WORKLIST_INSERT #define WORKLIST_INSERT_UNLOCKED WORKLIST_INSERT
#define WORKLIST_REMOVE_UNLOCKED WORKLIST_REMOVE #define WORKLIST_REMOVE_UNLOCKED WORKLIST_REMOVE
#else /* DEBUG */ #else /* INVARIANTS */
static void worklist_insert(struct workhead *, struct worklist *, int, static void worklist_insert(struct workhead *, struct worklist *, int,
const char *, int); const char *, int);
static void worklist_remove(struct worklist *, int, const char *, int); static void worklist_remove(struct worklist *, int, const char *, int);
@ -1066,7 +1059,7 @@ worklist_remove(item, locked, func, line)
item->wk_line = line; item->wk_line = line;
LIST_REMOVE(item, wk_list); LIST_REMOVE(item, wk_list);
} }
#endif /* DEBUG */ #endif /* INVARIANTS */
/* /*
* Merge two jsegdeps keeping only the oldest one as newer references * Merge two jsegdeps keeping only the oldest one as newer references
@ -1187,7 +1180,7 @@ workitem_free(item, type)
{ {
struct ufsmount *ump; struct ufsmount *ump;
#ifdef DEBUG #ifdef INVARIANTS
if (item->wk_state & ONWORKLIST) if (item->wk_state & ONWORKLIST)
panic("workitem_free: %s(0x%X) still on list, " panic("workitem_free: %s(0x%X) still on list, "
"added in function %s at line %d", "added in function %s at line %d",
@ -2577,7 +2570,7 @@ softdep_mount(devvp, mp, fs, cred)
fs->fs_cs(fs, cyl) = cgp->cg_cs; fs->fs_cs(fs, cyl) = cgp->cg_cs;
brelse(bp); brelse(bp);
} }
#ifdef DEBUG #ifdef INVARIANTS
if (bcmp(&cstotal, &fs->fs_cstotal, sizeof cstotal)) if (bcmp(&cstotal, &fs->fs_cstotal, sizeof cstotal))
printf("%s: superblock summary recomputed\n", fs->fs_fsmnt); printf("%s: superblock summary recomputed\n", fs->fs_fsmnt);
#endif #endif
@ -2899,7 +2892,7 @@ remove_from_journal(wk)
ump = VFSTOUFS(wk->wk_mp); ump = VFSTOUFS(wk->wk_mp);
LOCK_OWNED(ump); LOCK_OWNED(ump);
#ifdef SUJ_DEBUG #ifdef INVARIANTS
{ {
struct worklist *wkn; struct worklist *wkn;
@ -5121,7 +5114,7 @@ softdep_setup_blkmapdep(bp, mp, newblkno, frags, oldfrags)
jnewblk->jn_blkno = newblkno; jnewblk->jn_blkno = newblkno;
jnewblk->jn_frags = frags; jnewblk->jn_frags = frags;
jnewblk->jn_oldfrags = oldfrags; jnewblk->jn_oldfrags = oldfrags;
#ifdef SUJ_DEBUG #ifdef INVARIANTS
{ {
struct cg *cgp; struct cg *cgp;
uint8_t *blksfree; uint8_t *blksfree;
@ -8583,7 +8576,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk)
* Link into parent directory pagedep to await its being written. * Link into parent directory pagedep to await its being written.
*/ */
pagedep_lookup(mp, bp, dp->i_number, lbn, DEPALLOC, &pagedep); pagedep_lookup(mp, bp, dp->i_number, lbn, DEPALLOC, &pagedep);
#ifdef DEBUG #ifdef INVARIANTS
if (diradd_lookup(pagedep, offset) != NULL) if (diradd_lookup(pagedep, offset) != NULL)
panic("softdep_setup_directory_add: %p already at off %d\n", panic("softdep_setup_directory_add: %p already at off %d\n",
diradd_lookup(pagedep, offset), offset); diradd_lookup(pagedep, offset), offset);
@ -9314,7 +9307,7 @@ newdirrem(bp, dp, ip, isrmdir, prevdirremp)
*/ */
dirrem->dm_state |= COMPLETE; dirrem->dm_state |= COMPLETE;
cancel_diradd(dap, dirrem, jremref, dotremref, dotdotremref); cancel_diradd(dap, dirrem, jremref, dotremref, dotdotremref);
#ifdef SUJ_DEBUG #ifdef INVARIANTS
if (isrmdir == 0) { if (isrmdir == 0) {
struct worklist *wk; struct worklist *wk;
@ -9958,13 +9951,15 @@ handle_workitem_freefile(freefile)
{ {
struct workhead wkhd; struct workhead wkhd;
struct fs *fs; struct fs *fs;
struct inodedep *idp;
struct ufsmount *ump; struct ufsmount *ump;
int error; int error;
#ifdef INVARIANTS
struct inodedep *idp;
#endif
ump = VFSTOUFS(freefile->fx_list.wk_mp); ump = VFSTOUFS(freefile->fx_list.wk_mp);
fs = ump->um_fs; fs = ump->um_fs;
#ifdef DEBUG #ifdef INVARIANTS
ACQUIRE_LOCK(ump); ACQUIRE_LOCK(ump);
error = inodedep_lookup(UFSTOVFS(ump), freefile->fx_oldinum, 0, &idp); error = inodedep_lookup(UFSTOVFS(ump), freefile->fx_oldinum, 0, &idp);
FREE_LOCK(ump); FREE_LOCK(ump);
@ -10806,7 +10801,7 @@ softdep_setup_blkfree(mp, bp, blkno, frags, wkhd)
struct ufsmount *ump; struct ufsmount *ump;
struct worklist *wk; struct worklist *wk;
struct fs *fs; struct fs *fs;
#ifdef SUJ_DEBUG #ifdef INVARIANTS
uint8_t *blksfree; uint8_t *blksfree;
struct cg *cgp; struct cg *cgp;
ufs2_daddr_t jstart; ufs2_daddr_t jstart;
@ -10845,7 +10840,7 @@ softdep_setup_blkfree(mp, bp, blkno, frags, wkhd)
jnewblk = WK_JNEWBLK(wk); jnewblk = WK_JNEWBLK(wk);
KASSERT(jnewblk->jn_state & GOINGAWAY, KASSERT(jnewblk->jn_state & GOINGAWAY,
("softdep_setup_blkfree: jnewblk not canceled.")); ("softdep_setup_blkfree: jnewblk not canceled."));
#ifdef SUJ_DEBUG #ifdef INVARIANTS
/* /*
* Assert that this block is free in the bitmap * Assert that this block is free in the bitmap
* before we discard the jnewblk. * before we discard the jnewblk.
@ -10869,7 +10864,7 @@ softdep_setup_blkfree(mp, bp, blkno, frags, wkhd)
} }
} }
#ifdef SUJ_DEBUG #ifdef INVARIANTS
/* /*
* Assert that we are not freeing a block which has an outstanding * Assert that we are not freeing a block which has an outstanding
* allocation dependency. * allocation dependency.
@ -11250,7 +11245,7 @@ handle_allocdirect_partdone(adp, wkhd)
* be freed until they are moved to the current list. * be freed until they are moved to the current list.
*/ */
if (listadp == NULL) { if (listadp == NULL) {
#ifdef DEBUG #ifdef INVARIANTS
if (adp->ad_state & EXTDATA) if (adp->ad_state & EXTDATA)
listhead = &inodedep->id_newextupdt; listhead = &inodedep->id_newextupdt;
else else
@ -11261,7 +11256,7 @@ handle_allocdirect_partdone(adp, wkhd)
break; break;
if (listadp == NULL) if (listadp == NULL)
panic("handle_allocdirect_partdone: lost dep"); panic("handle_allocdirect_partdone: lost dep");
#endif /* DEBUG */ #endif /* INVARIANTS */
return; return;
} }
/* /*

View File

@ -213,7 +213,7 @@ struct worklist {
struct mount *wk_mp; /* Mount we live in */ struct mount *wk_mp; /* Mount we live in */
unsigned int wk_type:8, /* type of request */ unsigned int wk_type:8, /* type of request */
wk_state:24; /* state flags */ wk_state:24; /* state flags */
#ifdef DEBUG #ifdef INVARIANTS
const char *wk_func; /* func where added / removed */ const char *wk_func; /* func where added / removed */
int wk_line; /* line where added / removed */ int wk_line; /* line where added / removed */
#endif #endif