As discussed [*1], blk_rq_map_user_iov path is broken regarding padding at the moment. In 2.6.24, libata did padding but libata's padding code was removed and now libata expects the block layer to do that. blk_rq_map_user does padding but blk_rq_map_user_iov doesn't so blk_rq_map_user_iov doesn't work in case libata needs padding (so far nobody has complained, maybe nobody uses blk_rq_map_user_iov interface). This patchset adds padding support to blk_rq_map_user_iov. I converted convert bio_copy_user to bio_copy_user_iov, which uses a temporary kernel buffers. blk_rq_map_user_iov uses bio_copy_user_iov when a low level driver needs padding or a buffer in sg_iovec isn't aligned. We can safely do padding in blk_rq_map_sg. In the long run, I want to integrate several mapping APIs for PC commands (and new API should be useful for sg/st/osst) but I need more time to finish that work. This is against the latest Linus tree. Can we merge this after 2.6.25? [*1] http://marc.info/?t=120716961000004&r=1&w=2 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html