Hello, Apologies for posting twice (messed up on the subject line of the first post...) In kernel 2.6.26, the implementation of __blk_rq_map_user changed and now includes a call to bio_copy_user: uaddr = (unsigned long) ubuf; alignment = queue_dma_alignment(q) | q->dma_pad_mask; if (!(uaddr & alignment) && !(len & alignment)) bio = bio_map_user(q, NULL, uaddr, len, reading); else bio = bio_copy_user(q, uaddr, len, reading); bio_copy_user uses the HBA's scatter-gather pages for the copy. The problem I face is that if the data is not aligned properly, or the len parameter does not divide properly, and the transfer is greater than the number of scatter-gather pages, the IO operation will fail. I am considering increasing the size of my data buffer to meet the length-alignment requirement and changing the 'len' parameter passed into blk_rq_map_user to include a larger size than my CDB transfer length. This way it will hit the bio_map_user branch instead of the bio_copy_user branch and I won't have to worry about insufficient sg-pages. The tape device should still honor the CDB write length, so unless there are other limitations imposed by the Linux kernel or SCSI subsystem, I think this is a workable solution. Does anyone in this list know if there are requirements against sending a larger buffer length than CDB transfer length? Thanks in advance. Brett Dennis IBM tape device driver developer -- 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