The usr.sbin/vmd/diskfmt regression test was broken, and also apparently never got listed in the parent Makefile.
Caveat: The test creates a couple of fairly large files; e.g. my own /usr/src wasn't big enough for them. (Is that why the test was never enabled?) $ du -ah scribble.* 948M scribble.qcow2 809M scribble.raw Changes: * The -s argument to vmctl create needs to come before the disk image name. * Some function names have changed. Handle part of that by just copying over log.c instead of re-implementing bits of it. (This seems really hacky, but it's already done for a couple of other files, and I'm still finding my way around the source tree so maybe not the best person to try to improve that.) * Now we can create disk images without the qemu package, if we change the extension t ".qcow2". * Add diskfmt to SUBDIR. I stumbled on this because I think I found a bug and was considering adding a regression test before trying to fix it. Here's the alleged bug, in case someone reading this can point out something obvious: falsifian angel d $ vmctl create -s 1g base.qcow2 vmctl: qcow2 imagefile created falsifian angel d $ vmctl create -b base.qcow2 derived.qcow2 vmctl: qcow2 imagefile created falsifian angel d $ vmctl create -i derived.qcow2 fresh.qcow2 unable to resolve base.qcow2 vmctl: failed to open source image file I expected the last command to create a fresh copy of derived.qcow2 that doesn't depend on base.qcow2. I haven't (yet) investigated why it doesn't work. - James diff --git a/regress/usr.sbin/vmd/Makefile b/regress/usr.sbin/vmd/Makefile index 9e605b6ba87..4f174550fff 100644 --- a/regress/usr.sbin/vmd/Makefile +++ b/regress/usr.sbin/vmd/Makefile @@ -2,7 +2,7 @@ .if ${MACHINE} == "amd64" SUBDIR = -SUBDIR += config +SUBDIR += config diskfmt .elif make(regress) || make(all) ${.TARGETS}: diff --git a/regress/usr.sbin/vmd/diskfmt/Makefile b/regress/usr.sbin/vmd/diskfmt/Makefile index 33ac4c6cf18..446ae4114f0 100644 --- a/regress/usr.sbin/vmd/diskfmt/Makefile +++ b/regress/usr.sbin/vmd/diskfmt/Makefile @@ -4,28 +4,25 @@ # 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/ PROG=vioscribble -SRCS=vioscribble.c vioqcow2.c vioraw.c +SRCS=vioscribble.c log.c vioqcow2.c vioraw.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 . +log.c vioqcow2.c vioraw.c: $(VMD_DIR)/log.c $(VMD_DIR)/vioqcow2.c $(VMD_DIR)/vioraw.c + cp $(VMD_DIR)/log.c $(VMD_DIR)/vioqcow2.c $(VMD_DIR)/vioraw.c . diff --git a/regress/usr.sbin/vmd/diskfmt/vioscribble.c b/regress/usr.sbin/vmd/diskfmt/vioscribble.c index 0152b8d4bb4..12c316f88a0 100644 --- a/regress/usr.sbin/vmd/diskfmt/vioscribble.c +++ b/regress/usr.sbin/vmd/diskfmt/vioscribble.c @@ -65,43 +65,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 +83,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);