summaryrefslogtreecommitdiffstats
path: root/sbin/vinum
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2001-02-20 22:07:36 +0000
committeralfred <alfred@FreeBSD.org>2001-02-20 22:07:36 +0000
commit557b41f4e9ce086047aaffd2325d860ef65cd318 (patch)
treee1987b9c318439dcaa734051c47e9789c04037eb /sbin/vinum
parentd616306dacee5c358e9356020d6a0c67c6d0153e (diff)
downloadFreeBSD-src-557b41f4e9ce086047aaffd2325d860ef65cd318.zip
FreeBSD-src-557b41f4e9ce086047aaffd2325d860ef65cd318.tar.gz
Fix vinum for both devfs and non-devfs systems.
userland tool: Use the vfs.devfs.generation sysctl to test for devfs presense (thanks phk!) when devfs is active it will not try to create the device nodes in /dev and therefore will not complain about the failure to do so. Revert the change in the #define for VINUM_DIR in the kernel header so that vinum can find its device nodes. Replace perror() with vinum_perror() to print file/line when DEVBUG is defined (not defined by default). kernel: Don't use the #define names for the "superdev" creation since they will be prepended by "/dev/" (based on VINUM_DIR), instead use string constants. Create both debug and non-debug "superdev" nodes in the devfs. Problem noticed and fix tested by: Martin Blapp <mblapp@fuchur.lan.attic.ch>
Diffstat (limited to 'sbin/vinum')
-rw-r--r--sbin/vinum/Makefile4
-rw-r--r--sbin/vinum/commands.c38
-rw-r--r--sbin/vinum/list.c26
-rw-r--r--sbin/vinum/v.c54
-rw-r--r--sbin/vinum/vext.h13
-rw-r--r--sbin/vinum/vinum.82
6 files changed, 84 insertions, 53 deletions
diff --git a/sbin/vinum/Makefile b/sbin/vinum/Makefile
index e817e3a..c5c650a 100644
--- a/sbin/vinum/Makefile
+++ b/sbin/vinum/Makefile
@@ -5,6 +5,10 @@ SRCS= v.c list.c vinumparser.c vinumutil.c vext.h commands.c
MAN8= vinum.8
CFLAGS+= -I${.CURDIR}/../../sys -Wall -DVINUMDEBUG
+
+# Print __FILE__ and __LINE__ when doing perror()
+#CFLAGS+= -DDEVBUG
+
DPADD= ${LIBREADLINE} ${LIBTERMCAP} ${LIBDEVSTAT}
LDADD= -lreadline -ltermcap -ldevstat
diff --git a/sbin/vinum/commands.c b/sbin/vinum/commands.c
index f5e9c2d..44a170a 100644
--- a/sbin/vinum/commands.c
+++ b/sbin/vinum/commands.c
@@ -36,7 +36,7 @@
* otherwise) arising in any way out of the use of this software, even if
* advised of the possibility of such damage.
*
- * $Id: commands.c,v 1.12 2000/03/01 03:03:53 grog Exp grog $
+ * $Id: commands.c,v 1.36 2000/12/20 05:05:39 grog Exp $
* $FreeBSD$
*/
@@ -127,7 +127,7 @@ vinum_create(int argc, char *argv[], char *arg0[])
if (configline == NULL) {
if (ferror(dfd))
- perror("Can't read config file");
+ vinum_perror("Can't read config file");
break;
}
file_line++; /* count the lines */
@@ -156,7 +156,7 @@ vinum_create(int argc, char *argv[], char *arg0[])
ioctltype = 0; /* saveconfig after update */
error = ioctl(superdev, VINUM_SAVECONFIG, &ioctltype); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
make_devices();
listconfig();
checkupdates(); /* make sure we're updating */
@@ -191,11 +191,11 @@ vinum_read(int argc, char *argv[], char *arg0[])
fprintf(stdout, "** %s: %s\n", reply->msg, strerror(reply->error));
error = ioctl(superdev, VINUM_RELEASECONFIG, NULL); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
} else {
error = ioctl(superdev, VINUM_RELEASECONFIG, NULL); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
make_devices();
}
checkupdates(); /* make sure we're updating */
@@ -287,7 +287,7 @@ vinum_resetconfig(int argc, char *argv[], char *arg0[])
if (errno == EBUSY)
fprintf(stderr, "Can't reset configuration: objects are in use\n");
else
- perror("Can't find vinum config");
+ vinum_perror("Can't find vinum config");
} else {
make_devices(); /* recreate the /dev/vinum hierarchy */
printf("\b Vinum configuration obliterated\n");
@@ -532,7 +532,7 @@ vinum_start(int argc, char *argv[], char *arg0[])
tokens = 0; /* no tokens yet */
if (getdevs(&statinfo) < 0) { /* find out what devices we have */
- perror("Can't get device list");
+ vinum_perror("Can't get device list");
return;
}
namelist[0] = '\0'; /* start with empty namelist */
@@ -707,7 +707,7 @@ vinum_stop(int argc, char *argv[], char *arg0[])
fileid = kldfind(VINUMMOD);
if ((fileid < 0) /* no go */
||(kldunload(fileid) < 0))
- perror("Can't unload " VINUMMOD);
+ vinum_perror("Can't unload " VINUMMOD);
else {
fprintf(stderr, VINUMMOD " unloaded\n");
exit(0);
@@ -716,7 +716,7 @@ vinum_stop(int argc, char *argv[], char *arg0[])
/* If we got here, the stop failed. Reopen the superdevice. */
superdev = open(VINUM_SUPERDEV_NAME, O_RDWR); /* reopen vinum superdevice */
if (superdev < 0) {
- perror("Can't reopen Vinum superdevice");
+ vinum_perror("Can't reopen Vinum superdevice");
exit(1);
}
} else { /* stop specified objects */
@@ -873,7 +873,7 @@ vinum_resetstats(int argc, char *argv[], char *argv0[])
enum objecttype type;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
if (argc == 0) {
@@ -935,7 +935,7 @@ vinum_attach(int argc, char *argv[], char *argv0[])
return;
}
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
msg.index = find_object(objname, &msg.type); /* find the object to attach */
@@ -1057,7 +1057,7 @@ vinum_detach(int argc, char *argv[], char *argv0[])
return;
}
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
msg.index = find_object(argv[0], &msg.type); /* find the object to detach */
@@ -1197,7 +1197,7 @@ vinum_rename(int argc, char *argv[], char *argv0[])
return;
}
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
vinum_rename_2(argv[0], argv[1]);
@@ -1227,7 +1227,7 @@ vinum_mv(int argc, char *argv[], char *argv0[])
}
/* Get current config */
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Cannot get vinum config\n");
+ vinum_perror("Cannot get vinum config\n");
return;
}
/* Get our destination */
@@ -1616,7 +1616,7 @@ vinum_concat(int argc, char *argv[], char *argv0[])
ioctltype = 0; /* saveconfig after update */
error = ioctl(superdev, VINUM_SAVECONFIG, &ioctltype); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
find_object(objectname, &type); /* find the index of the volume */
make_vol_dev(vol.volno, 1); /* and create the devices */
if (vflag) {
@@ -1761,7 +1761,7 @@ vinum_stripe(int argc, char *argv[], char *argv0[])
ioctltype = 0; /* saveconfig after update */
error = ioctl(superdev, VINUM_SAVECONFIG, &ioctltype); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
find_object(objectname, &type); /* find the index of the volume */
make_vol_dev(vol.volno, 1); /* and create the devices */
if (vflag) {
@@ -1905,7 +1905,7 @@ vinum_raid4(int argc, char *argv[], char *argv0[])
ioctltype = 0; /* saveconfig after update */
error = ioctl(superdev, VINUM_SAVECONFIG, &ioctltype); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
find_object(objectname, &type); /* find the index of the volume */
make_vol_dev(vol.volno, 1); /* and create the devices */
if (vflag) {
@@ -2049,7 +2049,7 @@ vinum_raid5(int argc, char *argv[], char *argv0[])
ioctltype = 0; /* saveconfig after update */
error = ioctl(superdev, VINUM_SAVECONFIG, &ioctltype); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
find_object(objectname, &type); /* find the index of the volume */
make_vol_dev(vol.volno, 1); /* and create the devices */
if (vflag) {
@@ -2224,7 +2224,7 @@ vinum_mirror(int argc, char *argv[], char *argv0[])
ioctltype = 0; /* saveconfig after update */
error = ioctl(superdev, VINUM_SAVECONFIG, &ioctltype); /* save the config to disk */
if (error != 0)
- perror("Can't save Vinum config");
+ vinum_perror("Can't save Vinum config");
find_object(objectname, &type); /* find the index of the volume */
make_vol_dev(vol.volno, 1); /* and create the devices */
if (vflag) {
diff --git a/sbin/vinum/list.c b/sbin/vinum/list.c
index 041ec38..81acc93 100644
--- a/sbin/vinum/list.c
+++ b/sbin/vinum/list.c
@@ -39,7 +39,7 @@
* otherwise) arising in any way out of the use of this software, even if
* advised of the possibility of such damage.
*
- * $Id: list.c,v 1.25 2000/12/20 03:38:43 grog Exp grog $
+ * $Id: list.c,v 1.30 2001/01/14 11:42:19 grog Exp $
* $FreeBSD$
*/
@@ -273,7 +273,7 @@ vinum_ld(int argc, char *argv[], char *argv0[])
enum objecttype type;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
if (argc == 0) {
@@ -398,7 +398,7 @@ vinum_lv(int argc, char *argv[], char *argv0[])
enum objecttype type;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
if (argc == 0)
@@ -565,7 +565,7 @@ vinum_lp(int argc, char *argv[], char *argv0[])
enum objecttype type;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
if (argc == 0) {
@@ -768,7 +768,7 @@ vinum_ls(int argc, char *argv[], char *argv0[])
enum objecttype type;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
if (argc == 0) {
@@ -793,7 +793,7 @@ void
listconfig()
{
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
printf("%d drives:\n", vinum_conf.drives_used);
@@ -841,12 +841,12 @@ vinum_info(int argc, char *argv[], char *argv0[])
#endif
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
printf("Flags: 0x%x\n", vinum_conf.flags);
if (ioctl(superdev, VINUM_MEMINFO, &meminfo) < 0) {
- perror("Can't get information");
+ vinum_perror("Can't get information");
return;
}
printf("Total of %d blocks malloced, total memory: %d\nMaximum allocs: %8d, malloc table at 0x%08x\n",
@@ -862,7 +862,7 @@ vinum_info(int argc, char *argv[], char *argv0[])
for (i = 0; i < meminfo.mallocs; i++) {
malloced.seq = i;
if (ioctl(superdev, VINUM_MALLOCINFO, &malloced) < 0) {
- perror("Can't get information");
+ vinum_perror("Can't get information");
return;
}
if (!(i & 63))
@@ -881,7 +881,7 @@ vinum_info(int argc, char *argv[], char *argv0[])
for (i = RQINFO_SIZE - 1; i >= 0; i--) { /* go through the request list in order */
*((int *) &rq) = i;
if (ioctl(superdev, VINUM_RQINFO, &rq) < 0) {
- perror("Can't get information");
+ vinum_perror("Can't get information");
return;
}
/* Compress devminor into something printable. */
@@ -1067,7 +1067,7 @@ printconfig(FILE * of, char *comment)
struct drive drive;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
uname(&uname_s); /* get our system name */
@@ -1158,7 +1158,7 @@ list_defective_objects()
int heading_needed = 1;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
for (o = 0; o < vinum_conf.drives_allocated; o++) {
@@ -1237,7 +1237,7 @@ vinum_dumpconfig(int argc, char *argv[], char *argv0[])
tokens = 0; /* no tokens yet */
if (getdevs(&statinfo) < 0) { /* find out what devices we have */
- perror("Can't get device list");
+ vinum_perror("Can't get device list");
return;
}
namelist[0] = '\0'; /* start with empty namelist */
diff --git a/sbin/vinum/v.c b/sbin/vinum/v.c
index 14e9483..0cda377 100644
--- a/sbin/vinum/v.c
+++ b/sbin/vinum/v.c
@@ -36,7 +36,7 @@
* otherwise) arising in any way out of the use of this software, even if
* advised of the possibility of such damage.
*
- * $Id: v.c,v 1.30 2000/05/07 04:20:53 grog Exp grog $
+ * $Id: v.c,v 1.30 2000/09/03 01:29:29 grog Exp $
* $FreeBSD$
*/
@@ -62,6 +62,7 @@
#include <sys/linker.h>
#include <sys/module.h>
#include <sys/resource.h>
+#include <sys/sysctl.h>
FILE *cf; /* config file handle */
FILE *history; /* history file */
@@ -116,7 +117,7 @@ main(int argc, char *argv[], char *envp[])
if (modfind(VINUMMOD) < 0) {
/* need to load the vinum module */
if (kldload(VINUMMOD) < 0 || modfind(VINUMMOD) < 0) {
- perror(VINUMMOD ": Kernel module not available");
+ vinum_perror(VINUMMOD ": Kernel module not available");
return 1;
}
}
@@ -179,7 +180,7 @@ main(int argc, char *argv[], char *envp[])
} else if (errno == ENOENT) /* we don't have our node, */
make_devices(); /* create them first */
if (superdev < 0) {
- perror("Can't open " VINUM_SUPERDEV_NAME);
+ vinum_perror("Can't open " VINUM_SUPERDEV_NAME);
return 1;
}
}
@@ -500,7 +501,7 @@ find_drive_by_devname(char *name)
int driveno;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return NULL;
}
for (driveno = 0; driveno < vinum_conf.drives_allocated; driveno++) {
@@ -512,6 +513,8 @@ find_drive_by_devname(char *name)
return NULL; /* no drive of that name */
}
+static int devfs_is_active = 0;
+
/* Create the device nodes for vinum objects */
void
make_devices(void)
@@ -521,11 +524,16 @@ make_devices(void)
int sdno;
int driveno;
- if (access("/dev", W_OK) < 0) { /* can't access /dev to write? */
+ if (sysctlbyname("vfs.devfs.generation", NULL, NULL, NULL, 0) == 0)
+ devfs_is_active = 1;
+ else
+ devfs_is_active = 0;
+
+ if (!devfs_is_active && access("/dev", W_OK) < 0) { /* can't access /dev to write? */
if (errno == EROFS) /* because it's read-only, */
fprintf(stderr, VINUMMOD ": /dev is mounted read-only, not rebuilding " VINUM_DIR "\n");
else
- perror(VINUMMOD ": Can't write to /dev");
+ vinum_perror(VINUMMOD ": Can't write to /dev");
return;
}
if (history) {
@@ -535,31 +543,37 @@ make_devices(void)
if (superdev >= 0) /* super device open */
close(superdev);
- system("rm -rf " VINUM_DIR); /* remove the old directories */
- system("mkdir -p " VINUM_DIR "/drive " /* and make them again */
+ if (!devfs_is_active) {
+ system("rm -rf " VINUM_DIR); /* remove the old directories */
+ system("mkdir -p " VINUM_DIR "/drive " /* and make them again */
VINUM_DIR "/plex "
VINUM_DIR "/sd "
VINUM_DIR "/vol");
+ }
- if (mknod(VINUM_SUPERDEV_NAME,
+ if (!devfs_is_active && mknod(VINUM_SUPERDEV_NAME,
S_IRUSR | S_IWUSR | S_IFCHR, /* user only */
makedev(VINUM_CDEV_MAJOR, VINUM_SUPERDEV)) < 0)
fprintf(stderr, "Can't create %s: %s\n", VINUM_SUPERDEV_NAME, strerror(errno));
- if (mknod(VINUM_WRONGSUPERDEV_NAME,
+ if (!devfs_is_active && mknod(VINUM_WRONGSUPERDEV_NAME,
S_IRUSR | S_IWUSR | S_IFCHR, /* user only */
makedev(VINUM_CDEV_MAJOR, VINUM_WRONGSUPERDEV)) < 0)
fprintf(stderr, "Can't create %s: %s\n", VINUM_WRONGSUPERDEV_NAME, strerror(errno));
superdev = open(VINUM_SUPERDEV_NAME, O_RDWR); /* open the super device */
+ if (superdev < 0) {
+ perror(VINUM_SUPERDEV_NAME);
+ return;
+ }
- if (mknod(VINUM_DAEMON_DEV_NAME, /* daemon super device */
+ if (!devfs_is_active && mknod(VINUM_DAEMON_DEV_NAME, /* daemon super device */
S_IRUSR | S_IWUSR | S_IFCHR, /* user only */
makedev(VINUM_CDEV_MAJOR, VINUM_DAEMON_DEV)) < 0)
fprintf(stderr, "Can't create %s: %s\n", VINUM_DAEMON_DEV_NAME, strerror(errno));
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
return;
}
for (volno = 0; volno < vinum_conf.volumes_allocated; volno++)
@@ -576,7 +590,7 @@ make_devices(void)
char filename[PATH_MAX]; /* for forming file names */
get_drive_info(&drive, driveno);
- if (drive.state > drive_referenced) {
+ if (!devfs_is_active && drive.state > drive_referenced) {
sprintf(filename, "ln -s %s " VINUM_DIR "/drive/%s", drive.devicename, drive.label.name);
system(filename);
}
@@ -595,6 +609,7 @@ make_vol_dev(int volno, int recurse)
if (vol.state != volume_unallocated) { /* we could have holes in our lists */
voldev = VINUMDEV(volno, 0, 0, VINUM_VOLUME_TYPE); /* create a device number */
+ if (!devfs_is_active) {
/* Create /dev/vinum/<myvol> */
sprintf(filename, VINUM_DIR "/%s", vol.name);
if (mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, voldev) < 0)
@@ -611,6 +626,7 @@ make_vol_dev(int volno, int recurse)
if (mkdir(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IXOTH) < 0)
fprintf(stderr, "Can't create %s: %s\n", filename, strerror(errno));
}
+ }
if (recurse)
for (plexno = 0; plexno < vol.plexes; plexno++)
make_plex_dev(plex.plexno, recurse);
@@ -634,7 +650,7 @@ make_plex_dev(int plexno, int recurse)
/* /dev/vinum/plex/<plex> */
sprintf(filename, VINUM_DIR "/plex/%s", plex.name);
- if (mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, plexdev) < 0)
+ if (!devfs_is_active && mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, plexdev) < 0)
fprintf(stderr, "Can't create %s: %s\n", filename, strerror(errno));
if (plex.volno >= 0) {
@@ -643,12 +659,12 @@ make_plex_dev(int plexno, int recurse)
/* Create device /dev/vinum/vol/<vol>.plex/<plex> */
sprintf(filename, VINUM_DIR "/vol/%s.plex/%s", vol.name, plex.name);
- if (mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, plexdev) < 0)
+ if (!devfs_is_active && mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, plexdev) < 0)
fprintf(stderr, "Can't create %s: %s\n", filename, strerror(errno));
/* Create directory /dev/vinum/vol/<vol>.plex/<plex>.sd */
sprintf(filename, VINUM_DIR "/vol/%s.plex/%s.sd", vol.name, plex.name);
- if (mkdir(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IXOTH) < 0)
+ if (!devfs_is_active && mkdir(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IXOTH) < 0)
fprintf(stderr, "Can't create %s: %s\n", filename, strerror(errno));
}
if (recurse) {
@@ -673,7 +689,7 @@ make_sd_dev(int sdno)
/* /dev/vinum/sd/<sd> */
sprintf(filename, VINUM_DIR "/sd/%s", sd.name);
- if (mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, sddev) < 0)
+ if (!devfs_is_active && mknod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, sddev) < 0)
fprintf(stderr, "Can't create %s: %s\n", filename, strerror(errno));
}
}
@@ -697,7 +713,7 @@ find_object(const char *name, enum objecttype *type)
int object;
if (ioctl(superdev, VINUM_GETCONFIG, &vinum_conf) < 0) {
- perror("Can't get vinum config");
+ vinum_perror("Can't get vinum config");
*type = invalid_object;
return -1;
}
@@ -824,7 +840,7 @@ start_daemon(void)
close(superdev); /* this is the wrong device */
superdev = open(VINUM_DAEMON_DEV_NAME, O_RDWR); /* open deamon superdevice */
if (superdev < 0) {
- perror("Can't open " VINUM_DAEMON_DEV_NAME);
+ vinum_perror("Can't open " VINUM_DAEMON_DEV_NAME);
exit(1);
}
error = daemon(0, 0); /* this will fork again, but who's counting? */
diff --git a/sbin/vinum/vext.h b/sbin/vinum/vext.h
index fa57832..d136b0f 100644
--- a/sbin/vinum/vext.h
+++ b/sbin/vinum/vext.h
@@ -35,7 +35,7 @@
*/
/*
- * $Id: vext.h,v 1.17 2000/05/07 04:17:12 grog Exp grog $
+ * $Id: vext.h,v 1.18 2000/06/02 03:55:01 grog Exp $
* $FreeBSD$
*/
@@ -176,3 +176,14 @@ extern int file_line; /* and line in input file (yes, this is tacky) */
extern char buffer[]; /* buffer to read in to */
#define min(a, b) a < b? a: b
+
+#ifdef DEVBUG
+#define vinum_perror(str) \
+ do { \
+ fprintf(stderr, "%s:%d> ", __FILE__, __LINE__); \
+ perror(str); \
+ } while (0)
+#else
+#define vinum_perror(str) perror(str)
+#endif
+
diff --git a/sbin/vinum/vinum.8 b/sbin/vinum/vinum.8
index 9c67d5d..d0ca15f 100644
--- a/sbin/vinum/vinum.8
+++ b/sbin/vinum/vinum.8
@@ -34,7 +34,7 @@
.\" otherwise) arising in any way out of the use of this software, even if
.\" advised of the possibility of such damage.
.\"
-.\" $Id: vinum.8,v 1.13 2000/01/03 03:12:56 grog Exp grog $
+.\" $Id: vinum.8,v 1.48 2001/01/15 22:15:05 grog Exp $
.\" $FreeBSD$
.\"
.Dd December 20, 2000
OpenPOWER on IntegriCloud