Add support for generating / verifying protection information in the
file system. This is done by hooking into the bio submission in
iomap and then using the generic PI helpers. Compared to just using
the block layer auto PI this extends the protection envelope and also
prepares for eventually passing through PI from userspace at least
for direct I/O.
Right now this is still pretty hacky, e.g. the single PI buffer can
get pretty gigantic and has no mempool backing it. The deferring of
I/O completions is done unconditionally instead only when needed,
and we assume the device can actually handle these huge segments.
The latter should be fixed by doing proper splitting based on metadata
limits in the block layer, but the rest needs to be addressed here.