int irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); int result = ata_write_sectors(IF_MV2(current_cmd.lun,) current_cmd.sector, MIN(BUFFER_SIZE/SECTOR_SIZE,current_cmd.count), current_cmd.data[current_cmd.data_select]); if(result != 0) { send_csw(SCSI_STATUS_CHECK_CONDITION); cur_sense_data.sense_key=SENSE_MEDIUM_ERROR; cur_sense_data.asc=ASC_WRITE_ERROR; break; } ata_read_sectors(IF_MV2(current_cmd.lun,) current_cmd.sector, MIN(BUFFER_SIZE/SECTOR_SIZE,current_cmd.count), verify_buffer); set_irq_level(irq_level);