Hi Bartlomiej, On Sat, 1 Dec 2007 23:53:05 +0100, Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> wrote: > On Saturday 01 December 2007, Kiyoshi Ueda wrote: > > This patch converts "normal" parts of ide to use blk_end_request(). > > > > Signed-off-by: Kiyoshi Ueda <k-ueda@xxxxxxxxxxxxx> > > Signed-off-by: Jun'ichi Nomura <j-nomura@xxxxxxxxxxxxx> > > --- > > drivers/ide/ide-cd.c | 6 +++--- > > drivers/ide/ide-io.c | 17 ++++++----------- > > 2 files changed, 9 insertions(+), 14 deletions(-) > > [...] > > > Index: 2.6.24-rc3-mm2/drivers/ide/ide-io.c > > =================================================================== > > --- 2.6.24-rc3-mm2.orig/drivers/ide/ide-io.c > > +++ 2.6.24-rc3-mm2/drivers/ide/ide-io.c > > @@ -78,14 +78,9 @@ static int __ide_end_request(ide_drive_t > > ide_dma_on(drive); > > } > > > > - if (!end_that_request_chunk(rq, uptodate, nr_bytes)) { > > - add_disk_randomness(rq->rq_disk); > > - if (dequeue) { > > - if (!list_empty(&rq->queuelist)) > > - blkdev_dequeue_request(rq); > > + if (!__blk_end_request(rq, uptodate, nr_bytes)) { > > + if (dequeue) > > HWGROUP(drive)->rq = NULL; > > - } > > - end_that_request_last(rq, uptodate); > > ret = 0; > > } > > Hmmm, this seems to change the old behavior (the request should > be dequeued from the queue only if 'dequeue' variable is set) > and AFAIR some error handling code (in ide-cd?) depends on the > old behavior so please revisit this patch. blk_end_request() takes care of the dequeue like below, so I think no problem. (Please see PATCH 01) > + /* rq->queuelist of dequeued request should be list_empty() */ > + if (!list_empty(&rq->queuelist)) > + blkdev_dequeue_request(rq); In the case of ide-cd, o 'dequeue' variable is 1 only when the request is still linked to the queue (i.e. rq->queuelist is not empty) o 'dequeue' variable is 0 only when the request has already been removed from the queue (i.e. rq->queuelist is empty) So blk_end_request() can handle it correctly. If there are any drivers which don't want dequeue the queued request, the code above would not work. But, as far as I investigated, I have never seen such a requirement in device drivers. Do you think that ide may still gets a problem for the 'dequeue'? Thanks, Kiyoshi Ueda -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel