• Jens Axboe's avatar
    IDE: fix termination of non-fs requests · 41e9d344
    Jens Axboe authored
    ide-disk calls
    
            ide_end_request(drive, 0, 0);
    
    to finish an unknown request, but this doesn't work so well for non-fs
    requests, since ide_end_request() internally looks at ->hard_cur_sectors
    to see how much data to end. Only file system requests store a transfer
    value in there, pc requests fill out ->data_len as a byte based transfer
    value instead.
    
    Since we ask to end 0 bytes of that request, it will never be terminated
    and ide-disk gets stuck in a loop "handling" that same request over and
    over.
    
    Switch __ide_end_request() to take a byte based transfer count, and
    adjust ide_end_request() to look at the right field to determine how
    much IO to end when it's being passed in 0.
    Acked-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Tested-By: default avatarGiacomo Catenazzi <cate@debian.org>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    41e9d344
ide-io.c 51.1 KB