Remove #ifdef VINUMDEBUG. vinum(8) now always supports debug options

if the kernel module is built that way.

vinum_info: Check for kernel module debug support, print error message
if not present.
This commit is contained in:
grog 2001-05-23 05:21:22 +00:00
parent 4ebc84e616
commit 8e11e49303

View File

@ -833,192 +833,192 @@ vinum_info(int argc, char *argv[], char *argv0[])
struct meminfo meminfo; struct meminfo meminfo;
struct mc malloced; struct mc malloced;
int i; int i;
#if VINUMDEBUG
struct rqinfo rq; struct rqinfo rq;
#endif
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) { if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
perror("Can't get vinum config"); perror("Can't get vinum config");
return; return;
} }
printf("Flags: 0x%x\n", vinum_conf.flags); if ((vinum_conf.flags & VF_HASDEBUG) == 0)
if (ioctl(superdev, VINUM_MEMINFO, &meminfo) < 0) { fprintf(stderr, "Kernel module does not have debug support\n");
perror("Can't get information"); else {
return; printf("Flags: 0x%x\n", vinum_conf.flags);
} if (ioctl(superdev, VINUM_MEMINFO, &meminfo) < 0) {
printf("Total of %d blocks malloced, total memory: %d\nMaximum allocs: %8d, malloc table at 0x%08x\n", perror("Can't get information");
meminfo.mallocs, return;
meminfo.total_malloced,
meminfo.highwater,
(int) meminfo.malloced);
printf("%d requests active, maximum %d active\n",
vinum_conf.active,
vinum_conf.maxactive);
if (vflag && (!Verbose))
for (i = 0; i < meminfo.mallocs; i++) {
malloced.seq = i;
if (ioctl(superdev, VINUM_MALLOCINFO, &malloced) < 0) {
perror("Can't get information");
return;
}
if (!(i & 63))
printf("Block\tSequence\t size\t address\t line\t\tfile\n\n");
printf("%6d\t%6d\t\t%6d\t0x%08x\t%6d\t\t%s\n",
i,
malloced.seq,
malloced.size,
(int) malloced.address,
malloced.line,
(char *) &malloced.file);
} }
#if VINUMDEBUG printf("Total of %d blocks malloced, total memory: %d\nMaximum allocs: %8d, malloc table at 0x%08x\n",
if (Verbose) { meminfo.mallocs,
printf("\nTime\t\t Event\t Buf\tDev\t Offset\tBytes\tSD\tSDoff\tDoffset\tGoffset\n\n"); meminfo.total_malloced,
for (i = RQINFO_SIZE - 1; i >= 0; i--) { /* go through the request list in order */ meminfo.highwater,
*((int *) &rq) = i; (int) meminfo.malloced);
if (ioctl(superdev, VINUM_RQINFO, &rq) < 0) {
perror("Can't get information"); printf("%d requests active, maximum %d active\n",
return; vinum_conf.active,
vinum_conf.maxactive);
if (vflag && (!Verbose))
for (i = 0; i < meminfo.mallocs; i++) {
malloced.seq = i;
if (ioctl(superdev, VINUM_MALLOCINFO, &malloced) < 0) {
perror("Can't get information");
return;
}
if (!(i & 63))
printf("Block\tSequence\t size\t address\t line\t\tfile\n\n");
printf("%6d\t%6d\t\t%6d\t0x%08x\t%6d\t\t%s\n",
i,
malloced.seq,
malloced.size,
(int) malloced.address,
malloced.line,
(char *) &malloced.file);
} }
/* Compress devminor into something printable. */ if (Verbose) {
rq.devminor = (rq.devminor & 0xff) printf("\nTime\t\t Event\t Buf\tDev\t Offset\tBytes\tSD\tSDoff\tDoffset\tGoffset\n\n");
| ((rq.devminor & 0xfff0000) >> 8); for (i = RQINFO_SIZE - 1; i >= 0; i--) { /* go through the request list in order */
switch (rq.type) { *((int *) &rq) = i;
case loginfo_unused: /* never been used */ if (ioctl(superdev, VINUM_RQINFO, &rq) < 0) {
break; perror("Can't get information");
return;
}
/* Compress devminor into something printable. */
rq.devminor = (rq.devminor & 0xff)
| ((rq.devminor & 0xfff0000) >> 8);
switch (rq.type) {
case loginfo_unused: /* never been used */
break;
case loginfo_user_bp: /* this is the bp when strategy is called */ case loginfo_user_bp: /* this is the bp when strategy is called */
printf("%s %dVS %s %p\t%d.%-6d 0x%-9x\t%ld\n", printf("%s %dVS %s %p\t%d.%-6d 0x%-9x\t%ld\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.type, rq.type,
rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.devmajor, rq.devmajor,
rq.devminor, rq.devminor,
rq.info.b.b_blkno, rq.info.b.b_blkno,
rq.info.b.b_bcount); rq.info.b.b_bcount);
break; break;
case loginfo_sdiol: /* subdisk I/O launch */ case loginfo_sdiol: /* subdisk I/O launch */
case loginfo_user_bpl: /* and this is the bp at launch time */ case loginfo_user_bpl: /* and this is the bp at launch time */
printf("%s %dLR %s %p\t%d.%-6d 0x%-9x\t%ld\n", printf("%s %dLR %s %p\t%d.%-6d 0x%-9x\t%ld\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.type, rq.type,
rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.devmajor, rq.devmajor,
rq.devminor, rq.devminor,
rq.info.b.b_blkno, rq.info.b.b_blkno,
rq.info.b.b_bcount); rq.info.b.b_bcount);
break; break;
case loginfo_rqe: /* user RQE */ case loginfo_rqe: /* user RQE */
printf("%s 3RQ %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", printf("%s 3RQ %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.devmajor, rq.devmajor,
rq.devminor, rq.devminor,
rq.info.rqe.b.b_blkno, rq.info.rqe.b.b_blkno,
rq.info.rqe.b.b_bcount, rq.info.rqe.b.b_bcount,
rq.info.rqe.sdno, rq.info.rqe.sdno,
rq.info.rqe.sdoffset, rq.info.rqe.sdoffset,
rq.info.rqe.dataoffset, rq.info.rqe.dataoffset,
rq.info.rqe.groupoffset); rq.info.rqe.groupoffset);
break; break;
case loginfo_iodone: /* iodone called */ case loginfo_iodone: /* iodone called */
printf("%s 4DN %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", printf("%s 4DN %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.devmajor, rq.devmajor,
rq.devminor, rq.devminor,
rq.info.rqe.b.b_blkno, rq.info.rqe.b.b_blkno,
rq.info.rqe.b.b_bcount, rq.info.rqe.b.b_bcount,
rq.info.rqe.sdno, rq.info.rqe.sdno,
rq.info.rqe.sdoffset, rq.info.rqe.sdoffset,
rq.info.rqe.dataoffset, rq.info.rqe.dataoffset,
rq.info.rqe.groupoffset); rq.info.rqe.groupoffset);
break; break;
case loginfo_raid5_data: /* RAID-5 write data block */ case loginfo_raid5_data: /* RAID-5 write data block */
printf("%s 5RD %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", printf("%s 5RD %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.devmajor, rq.devmajor,
rq.devminor, rq.devminor,
rq.info.rqe.b.b_blkno, rq.info.rqe.b.b_blkno,
rq.info.rqe.b.b_bcount, rq.info.rqe.b.b_bcount,
rq.info.rqe.sdno, rq.info.rqe.sdno,
rq.info.rqe.sdoffset, rq.info.rqe.sdoffset,
rq.info.rqe.dataoffset, rq.info.rqe.dataoffset,
rq.info.rqe.groupoffset); rq.info.rqe.groupoffset);
break; break;
case loginfo_raid5_parity: /* RAID-5 write parity block */ case loginfo_raid5_parity: /* RAID-5 write parity block */
printf("%s 6RP %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n", printf("%s 6RP %s %p\t%d.%-6d 0x%-9x\t%ld\t%d\t%x\t%x\t%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.rqe.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.devmajor, rq.devmajor,
rq.devminor, rq.devminor,
rq.info.rqe.b.b_blkno, rq.info.rqe.b.b_blkno,
rq.info.rqe.b.b_bcount, rq.info.rqe.b.b_bcount,
rq.info.rqe.sdno, rq.info.rqe.sdno,
rq.info.rqe.sdoffset, rq.info.rqe.sdoffset,
rq.info.rqe.dataoffset, rq.info.rqe.dataoffset,
rq.info.rqe.groupoffset); rq.info.rqe.groupoffset);
break; break;
case loginfo_sdio: /* subdisk I/O */ case loginfo_sdio: /* subdisk I/O */
printf("%s %dVS %s %p\t\t 0x%-9x\t%ld\t%d\n", printf("%s %dVS %s %p\t\t 0x%-9x\t%ld\t%d\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.type, rq.type,
rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.info.b.b_blkno, rq.info.b.b_blkno,
rq.info.b.b_bcount, rq.info.b.b_bcount,
rq.devminor); rq.devminor);
break; break;
case loginfo_sdiodone: /* subdisk I/O done */ case loginfo_sdiodone: /* subdisk I/O done */
printf("%s %dSD %s %p\t\t 0x%-9x\t%ld\t%d\n", printf("%s %dSD %s %p\t\t 0x%-9x\t%ld\t%d\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.type, rq.type,
rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write", rq.info.b.b_iocmd == BIO_READ ? "Read " : "Write",
rq.bp, rq.bp,
rq.info.b.b_blkno, rq.info.b.b_blkno,
rq.info.b.b_bcount, rq.info.b.b_bcount,
rq.devminor); rq.devminor);
break; break;
case loginfo_lockwait: case loginfo_lockwait:
printf("%s Lockwait %p\t 0x%x\n", printf("%s Lockwait %p\t 0x%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.bp, rq.bp,
rq.info.lockinfo.stripe); rq.info.lockinfo.stripe);
break; break;
case loginfo_lock: case loginfo_lock:
printf("%s Lock %p\t 0x%x\n", printf("%s Lock %p\t 0x%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.bp, rq.bp,
rq.info.lockinfo.stripe); rq.info.lockinfo.stripe);
break; break;
case loginfo_unlock: case loginfo_unlock:
printf("%s Unlock\t %p\t 0x%x\n", printf("%s Unlock\t %p\t 0x%x\n",
timetext(&rq.timestamp), timetext(&rq.timestamp),
rq.bp, rq.bp,
rq.info.lockinfo.stripe); rq.info.lockinfo.stripe);
break; break;
}
} }
} }
} }
#endif
} }
/* /*