Was about to add a test for something I'm hacking on when I noticed the
diskfmt regress test wasn't enabled. I took a look and it's rotted. :(
It was originally written by Ori Bernstein and imported by ccardenas@
days before the vmctl(8) qcow2 disk creation capability was
committed by the same team. (8 Sep 2011 and 11 Sep 2011 respectively.)
The below diff allows it to compile and run properly. It also removes
the requirement of qemu from ports for making the qcow2 image since
vmctl(8) can do that now. Since it can now run with just vmctl, I've
also wired it into the parent Makefile to run with the other vmd regress
tests.
OK?
-dv
Index: regress/usr.sbin/vmd/Makefile
===================================================================
RCS file: /cvs/src/regress/usr.sbin/vmd/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- regress/usr.sbin/vmd/Makefile 29 Jan 2019 21:08:12 -0000 1.2
+++ regress/usr.sbin/vmd/Makefile 13 Jun 2021 14:42:42 -0000
@@ -2,7 +2,7 @@
.if ${MACHINE} == "amd64"
SUBDIR =
-SUBDIR += config
+SUBDIR += config diskfmt
.elif make(regress) || make(all)
${.TARGETS}:
Index: regress/usr.sbin/vmd/diskfmt/Makefile
===================================================================
RCS file: /cvs/src/regress/usr.sbin/vmd/diskfmt/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- regress/usr.sbin/vmd/diskfmt/Makefile 8 Oct 2018 16:32:01 -0000
1.2
+++ regress/usr.sbin/vmd/diskfmt/Makefile 13 Jun 2021 14:42:42 -0000
@@ -4,28 +4,26 @@
# qcow disk image, and scribbles the same data to both
# of them. It verifies that they both have the same
# result.
-#
-# In order for this test to work, qemu must be installed
-# in order to create the disk images.
-VMD_DIR=$(BSDSRCDIR)/usr.sbin/vmd/
+VMD_DIR=$(BSDSRCDIR)/usr.sbin/vmd
PROG=vioscribble
-SRCS=vioscribble.c vioqcow2.c vioraw.c
+SRCS=vioscribble.c vioqcow2.c vioraw.c log.c
CFLAGS+=-I$(VMD_DIR) -pthread
LDFLAGS+=-pthread
run-regress-vioscribble: scribble-images
scribble-images:
- rm -f scribble.raw scribble.qc2
- vmctl create scribble.raw -s 4G
- qemu-img create -f qcow2 scribble.qc2 4G
+ rm -f scribble.raw scribble.qcow2
+ vmctl create -s 4G scribble.raw
+ vmctl create -s 4G scribble.qcow2
.PHONY: ${REGRESS_TARGETS} scribble-images
.include <bsd.regress.mk>
-vioqcow2.c vioraw.c: $(VMD_DIR)/vioqcow2.c $(VMD_DIR)/vioraw.c
- cp $(VMD_DIR)/vioqcow2.c $(VMD_DIR)/vioraw.c .
+vioqcow2.c vioraw.c log.c: $(VMD_DIR)/vioqcow2.c $(VMD_DIR)/vioraw.c \
+ $(VMD_DIR)/log.c
+ cp $(VMD_DIR)/vioqcow2.c $(VMD_DIR)/vioraw.c $(VMD_DIR)/log.c .
Index: regress/usr.sbin/vmd/diskfmt/vioscribble.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/vmd/diskfmt/vioscribble.c,v
retrieving revision 1.2
diff -u -p -r1.2 vioscribble.c
--- regress/usr.sbin/vmd/diskfmt/vioscribble.c 8 Oct 2018 16:32:01 -0000
1.2
+++ regress/usr.sbin/vmd/diskfmt/vioscribble.c 13 Jun 2021 14:42:42 -0000
@@ -16,7 +16,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/*
+/*
* Quick hack of a program to try to test vioqcow2.c against
* vioraw.c.
*
@@ -51,7 +51,6 @@
#include <assert.h>
#include <err.h>
-#include "pci.h"
#include "vmd.h"
#include "vmm.h"
#include "virtio.h"
@@ -65,43 +64,6 @@ struct virtio_backing rawfile;
/* We expect the scribble disks to be 4g in size */
#define DISKSZ (4ull*1024ull*1024ull*1024ull)
-/* functions that io code depends on */
-
-void
-log_debug(const char *emsg, ...)
-{
- if (verbose) {
- va_list ap;
-
- va_start(ap, emsg);
- vfprintf(stdout, emsg, ap);
- fprintf(stdout, "\n");
- va_end(ap);
- }
-}
-
-void
-log_warnx(const char *emsg, ...)
-{
- va_list ap;
-
- va_start(ap, emsg);
- vfprintf(stdout, emsg, ap);
- fprintf(stdout, "\n");
- va_end(ap);
-}
-
-void
-log_warn(const char *emsg, ...)
-{
- va_list ap;
-
- va_start(ap, emsg);
- vfprintf(stdout, emsg, ap);
- fprintf(stdout, "\n");
- va_end(ap);
-}
-
static void
fill(size_t off, char *buf, size_t len)
{
@@ -120,13 +82,13 @@ main(int argc, char **argv)
off_t len, off, qcsz, rawsz;
verbose = !!getenv("VERBOSE");
- qcfd = open("scribble.qc2", O_RDWR);
+ qcfd = open("scribble.qcow2", O_RDWR);
rawfd = open("scribble.raw", O_RDWR);
if (qcfd == -1)
err(1, "unable to open qcow");
- if (virtio_init_qcow2(&qcowfile, &qcsz, &qcfd, 1) == -1)
+ if (virtio_qcow2_init(&qcowfile, &qcsz, &qcfd, 1) == -1)
err(1, "unable to init qcow");
- if (rawfd == -1 || virtio_init_raw(&rawfile, &rawsz, &rawfd, 1) == -1)
+ if (rawfd == -1 || virtio_raw_init(&rawfile, &rawsz, &rawfd, 1) == -1)
err(1, "unable to open raw");
srandom_deterministic(123);