[Libguestfs] [libnbd PATCH] tests: Enhance errors test

Richard W.M. Jones rjones at redhat.com
Sun Jun 30 17:54:54 UTC 2019


On Thu, Jun 27, 2019 at 10:18:30PM -0500, Eric Blake wrote:
> +  /* Queue up a write command so large that we block on POLLIN, then queue
> +   * multiple disconnects. XXX The last one should fail.
> +   */
> +  if (nbd_aio_pwrite (nbd, buf, 2 * 1024 * 1024, 0, 0) == -1) {
> +    fprintf (stderr, "%s: %s\n", argv[0], nbd_get_error ());
> +    exit (EXIT_FAILURE);
> +  }
> +  if ((nbd_aio_get_direction (nbd) & LIBNBD_AIO_DIRECTION_WRITE) == 0) {
> +    fprintf (stderr, "%s: test failed: "
> +             "expect to be blocked on write\n",
> +             argv[0]);
> +    exit (EXIT_FAILURE);
> +  }

This test fails when run under valgrind.  An abbreviated log shows
what's happening:

libnbd: debug: nbd_aio_pwrite: event CmdIssue: READY -> ISSUE_COMMAND.START
libnbd: debug: nbd_aio_pwrite: transition: ISSUE_COMMAND.START -> ISSUE_COMMAND.
SEND_REQUEST
libnbd: debug: nbd_aio_pwrite: transition: ISSUE_COMMAND.SEND_REQUEST -> ISSUE_C
OMMAND.PREPARE_WRITE_PAYLOAD
libnbd: debug: nbd_aio_pwrite: transition: ISSUE_COMMAND.PREPARE_WRITE_PAYLOAD -
> ISSUE_COMMAND.SEND_WRITE_PAYLOAD
libnbd: debug: nbd_aio_pwrite: transition: ISSUE_COMMAND.SEND_WRITE_PAYLOAD -> I
SSUE_COMMAND.FINISH
libnbd: debug: nbd_aio_pwrite: transition: ISSUE_COMMAND.FINISH -> READY
/home/rjones/d/libnbd/tests/.libs/lt-errors: test failed: expect to be blocked on write

It seems as if this is caused by valgrinded code running more slowly,
rather than an actual valgrind/memory error.

I wonder if we could remove the race using a custom nbdkit-sh-plugin
which would block on writes until (eg) a local trigger file was
touched?  Even that seems as if it would depend on the amount of data
that the kernel is able to buffer.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top




More information about the Libguestfs mailing list