Commit 14e04c3f authored by Kiyoshi Ueda's avatar Kiyoshi Ueda Committed by Bartlomiej Zolnierkiewicz

ide-cd: fix missing residual count setting in DMA mode

This patch fixes the missing residual count setting in DMA mode,
which was introduced during the conversion to blk-end-request.
The residual count could be used by the request submitter.
So if it isn't set correctly, some upper layers does not work.
(e.g. wodim for CD burning.)

The bug is in only DMA mode.
In PIO mode, we are setting the residual count correctly,
so no need to fix.
Signed-off-by: default avatarKiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: default avatarJun'ichi Nomura <j-nomura@ce.jp.nec.com>
Reported-by: default avatarAndreas Schwab <schwab@suse.de>
Tested-by: default avatarAndreas Schwab <schwab@suse.de>
Tested-by: default avatarLaura Garcia <nevola@gmail.com>
Tested-by: default avatarBorislav Petkov <petkovbb@googlemail.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 0e7d8d48
...@@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive) ...@@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
end_request: end_request:
if (blk_pc_request(rq)) { if (blk_pc_request(rq)) {
unsigned long flags; unsigned long flags;
unsigned int dlen = rq->data_len;
if (dma)
rq->data_len = 0;
spin_lock_irqsave(&ide_lock, flags); spin_lock_irqsave(&ide_lock, flags);
if (__blk_end_request(rq, 0, rq->data_len)) if (__blk_end_request(rq, 0, dlen))
BUG(); BUG();
HWGROUP(drive)->rq = NULL; HWGROUP(drive)->rq = NULL;
spin_unlock_irqrestore(&ide_lock, flags); spin_unlock_irqrestore(&ide_lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment