Looking at old code I think I have an idea what needs to be done. The quick hack for vnd remains. The adjustment for end of patition is done to b_bcount instead of b_resid. The block count to byte comparison used to be correct, so back out to the original or similar code. This would then work for all other drivers as well.