HAMMER VFS - More cluster_read() fixes
* The recent cluster limiting code was improperly using raw block device
offsets to calculate the largeblock mask used to prevent clustered I/Os
from crossing a large-block boundary.
raw block device offsets are not necessarily largeblock aligned, so
this calculation failed to properly limit cluster_read()s and the
result was an occassional clustered read would cross-over into an
incompatible largeblock and later cause an overlapping buffer panic.
* Calculate the proper limit in the hammer_ondisk.c module and refactor
hammer_io_read().
Reported-by: swildner