* Copyright (c) 1991 The Regents of the University of California.
* %sccs.include.redist.c%
* @(#)lfs_debug.c 7.3 (Berkeley) %G%
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
#include <ufs/lfs/lfs_extern.h>
(void)printf("%s%lx\t%s%lx\t%s%d\t%s%d\n",
"magic ", lfsp
->lfs_magic
,
"version ", lfsp
->lfs_version
,
"ssize ", lfsp
->lfs_ssize
);
(void)printf("%s%d\t%s%d\t%s%d\t%s%d\n",
"dsize ", lfsp
->lfs_dsize
,
"bsize ", lfsp
->lfs_bsize
,
"fsize ", lfsp
->lfs_fsize
,
"frag ", lfsp
->lfs_frag
);
(void)printf("%s%d\t%s%d\t%s%d\t%s%d\n",
"minfree ", lfsp
->lfs_minfree
,
"inopb ", lfsp
->lfs_inopb
,
"nindir ", lfsp
->lfs_nindir
);
(void)printf("%s%d\t%s%d\t%s%d\n",
"segtabsz ", lfsp
->lfs_segtabsz
);
(void)printf("%s%lx\t%s%d\t%s%lx\t%s%d\n",
"segmask ", lfsp
->lfs_segmask
,
"segshift ", lfsp
->lfs_segshift
,
"bmask ", lfsp
->lfs_bmask
,
"bshift ", lfsp
->lfs_bshift
);
(void)printf("%s%lx\t%s%d\t%s%lx\t%s%d\n",
"ffmask ", lfsp
->lfs_ffmask
,
"ffshift ", lfsp
->lfs_ffshift
,
"fbmask ", lfsp
->lfs_fbmask
,
"fbshift ", lfsp
->lfs_fbshift
);
(void)printf("%s%d\t%s%lx\n",
"fsbtodb ", lfsp
->lfs_fsbtodb
,
"cksum ", lfsp
->lfs_cksum
);
(void)printf("Superblock disk addresses:");
for (i
= 0; i
< LFS_MAXNUMSB
; i
++)
(void)printf(" %lx", lfsp
->lfs_sboffs
[i
]);
(void)printf("Checkpoint Info\n");
(void)printf("%s%d\t%s%lx\t%s%d\n",
"idaddr ", lfsp
->lfs_idaddr
,
"ifile ", lfsp
->lfs_ifile
);
(void)printf("%s%lx\t%s%d\t%s%lx\t%s%lx\n",
"bfree ", lfsp
->lfs_bfree
,
"nfiles ", lfsp
->lfs_nfiles
,
"lastseg ", lfsp
->lfs_lastseg
,
"nextseg ", lfsp
->lfs_nextseg
);
(void)printf("tstamp %lx\n", lfsp
->lfs_tstamp
);
(void)printf("%s%d\t%s%d\t%s%d\t%s%d\t%s%d\n",
"size ", (u_long
)dip
->di_size
);
(void)printf("inum %d\n", dip
->di_inum
);
(void)printf("Direct Addresses\n");
for (i
= 0; i
< NDADDR
; i
++) {
(void)printf("\t%lx", dip
->di_db
[i
]);
for (i
= 0; i
< NIADDR
; i
++)
(void)printf("\t%lx", dip
->di_ib
[i
]);
if ((mp
->mnt_flag
& MNT_MPBUSY
) == 0)
panic("umountdebug: not busy");
for (vp
= mp
->mnt_mounth
; vp
; vp
= vp
->v_mountf
) {
dirty
+= lfs_vinvalbuf(vp
);
register struct vnode
*vp
;
if (blist
= vp
->v_dirtyblkhd
)
else if (blist
= vp
->v_cleanblkhd
)
for (bp
= blist
; bp
; bp
= nbp
) {
printf("lfs_vinvalbuf: ino %d, lblkno %d, blkno %lx flags %xl\n",
VTOI(vp
)->i_number
, bp
->b_lblkno
, bp
->b_blkno
, bp
->b_flags
);
if (bp
->b_flags
& B_BUSY
) {
printf("lfs_vinvalbuf: buffer busy, would normally sleep\n");
sleep((caddr_t)bp, PRIBIO + 1);
if (bp
->b_flags
& B_DELWRI
) {
printf("lfs_vinvalbuf: buffer dirty (DELWRI). would normally write\n");
reassignbuf(bp
, bp
->b_vp
);
if (vp
->v_dirtyblkhd
|| vp
->v_cleanblkhd
)
panic("lfs_vinvalbuf: flush failed");