Hi, I wonder if this is entirely correct? If so, why? Only relevant parts left. * RETURNS: * Bytes consumed. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ unsigned int ata_sff_data_xfer(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw) { unsigned int words = buflen >> 1; ... /* Transfer trailing byte, if any. */ if (unlikely(buflen & 0x01)) { ... words++; } return words << 1; same here: unsigned int ata_sff_data_xfer32(struct ata_device *dev, unsigned char *buf, unsigned int buflen, int rw) { ... return (buflen + 1) & ~1; Please keep me in CC:, I'm not on the IDE list. Thanks. -- Krzysztof Halasa -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html