The difference between data and index block is not really supportable,
and we cannot just avoid waiting for some blocks.
But we cannot always for a full iowait as block that have been
allocated to a cluster do not complete until the cluster is written
and we don't want to wait for a cluster to be written, especially as
we there thread that is supposed to do that.
So create an intermediate iowait which wait for iolock to be dropped
or the block to be placed on a list. Once it is on a list we can be
sure not to lose it.
So we wait while incorporation or truncation happens, but not while
writeout happens.