Make integrity tests respect request ordering.
Prior to this patch, the integrity test fired reads and writes as
quickly as they could at the server. This included firing overlapping
reads and writes, before the prior read or write was acknowledged.
Under the protocol, the server is permitted to reorder reads and
writes until they are acknowledged. Whilst nbd-server does not
currently reorder reads or writes, this caused a "false failure"
in other servers that do reorder reads and writes. Also, the workload
as sent was unrealistic (in that servers do not normally have
overlapping reads and writes in their queue).
This patch maintains a record of the reads and writes inflight, and
ensures that:
1. If any block X is covered by an inflight write request, then
no other request covering block X will be sent until a reply
to such inflight write is received.
2. If any block X is covered by an inflight read or write request,
then no write request covering block X will be sent until a reply
to such inflight request is received.
In otherwords, disallow all overlapping inflight requests, except
overlapping inflight reads, which are permitted.
The "-l" option to nbd-tester-client can be used to turn on
looseordering, IE not do the above.
I have tested this on nbd-server (no change as expected) and on
a server which does reorder requests (which now passes the tests).