This fixes the logic so we always check for the cache. It also defaults to
safer behaviour for the non cache flush case now we have the right bits in
the right places. I've also played a bit with timings - the worst case
timings I can get for the flush are about 7 seconds (which I'd expect as
the engineering worst cases will include retries)
Probably what should happen is that the barrier logic is enabled providing
the wcache is disabled. I've not meddled with this as I don't know what
the intended semantics and rules are for disabling barrier on a live disk
(eg when a user uses hdparm to turn on the write cache). In the current
code as with Jens original that cannot occur.
I've also fixed the new printk's as per a private request from Matt Domsch.