• Linus Torvalds's avatar
    IDE: Make taskfile interface more robust wrt unexpected end-of-command · 6c3c3158
    Linus Torvalds authored
    Now that we handle all the special commands using REQ_TYPE_ATA_TASKFILE
    rather than using the old REQ_TYPE_ATA_CMD model, we need to also
    emulate the lack of full taskfile data that comes with the old command
    model (ie when commands are generated with the HDIO_DRIVE_CMD ioctl
    rather than using the HDIO_DRIVE_TASK[FILE] ioctls).
    
    In particular, this means that we should handle command completion the
    more relaxed way that the old drive_cmd_intr() code did.  It allows
    commands to finish early even if they don't use up all the data that we
    thought we had for them.
    
    This fixes a regression seen by Anders Eriksson where some SMART
    commands sent by smartd would cause a boot-time system hang on his
    machine because the IDE command handling code didn't realize that the
    command had completed.
    Tested-by: default avatarAnders Eriksson <aeriksson@fastmail.fm>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Acked-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6c3c3158
ide-taskfile.c 21.1 KB