Per the comment, we use an ordered write to guarantee that the
initialized block is written before the updated cylinder group header.
However, I've found that a number of GEOMs don't properly handle
BIO_ORDERED, so babarrierwrite() doesn't necessarily work as advertised.
I plan to fix at least gmirror, but in the meantime, I believe it's
useful to have a flag to work around the problem. The default value
configures the current behaviour, i.e., inode initialization is still
done asynchronously.
In a test where I untar a large file hierarchy onto a newly initialized
filesystem, the time required goes up by about 50% with
doasyncinodeinit=0 configured.
Longer-term I wonder if it might be possible to integrate this
dependency into SU. It doesn't look like we handle the case where
an async inode initialization returns with a write error, but the CG
update succeeds.