This addresses all the comments I've received so far, except for the handling of pwrite/pread through additional obj->ops as I think the cure was worse than the disease in that case (due to the fiddling around required for sg iterator and tracking individual struct page operations). -Chris