>>>>> "Tom" == tom ty89 <tom.ty89@xxxxxxxxx> writes: Tom, Tom> However, SD_MAX_WS16_BLOCKS is used to check values that are, for Tom> example, orignated from Maximum Write Same Length field on the Tom> Block Limit VPD. Such field expresses the number of blocks in terms Tom> of the actual logical sector size of the specific drive instead of Tom> the block size that the block layer is based on (512). I agree the SD_MAX_WS16_BLOCKS is ugly. I think it started out as a limit expressly set in block layer sector units and then when the discard code got expanded it got re-purposed into being something else. So let's get that cleaned up. However, the CDB transfer length limit is really not the main issue here, it's bi_size that we need to enforce. After contemplating a bit I think it would be cleanest to add BLK_MAX_BIO_SECTORS and clamp on that in blk_queue_max_foobar() like we do with some of the other queue limits. Move the enforcement to block where the actual limit originates rather than code around it in sd. Also, please use ilog2() instead of division for things like this. -- Martin K. Petersen Oracle Linux Engineering -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html