1. 26 Apr, 2008 1 commit
  2. 17 Apr, 2008 1 commit
  3. 10 Feb, 2008 2 commits
    • Bartlomiej Zolnierkiewicz's avatar
      ide-disk: fix flush requests (take 2) · 395d8ef5
      Bartlomiej Zolnierkiewicz authored
      commit 813a0eb2
      
      
      Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Date:   Fri Jan 25 22:17:10 2008 +0100
      
          ide: switch idedisk_prepare_flush() to use REQ_TYPE_ATA_TASKFILE requests
      
      ...
      
      broke flush requests.
      
      Allocating IDE command structure on the stack for flush requests is not
      a very brilliant idea:
      
      - idedisk_prepare_flush() only prepares the request and it doesn't wait
        for it to be completed
      
      - there are can be multiple flush requests queued in the queue
      
      Fix the problem (per hints from James Bottomley) by:
      - dynamically allocating ide_task_t instance using kmalloc(..., GFP_ATOMIC)
      - adding new taskfile flag (IDE_TFLAG_DYN)
      - calling kfree() in ide_end_drive_command() if IDE_TFLAG_DYN is set
        (while at it rename 'args' to 'task' and fix whitespace damage)
      
      [ This will be fixed properly before 2.6.25 but this bug is rather
        critical and the proper solution requires some more work + testing. ]
      
      Thanks to Sebastian Siewior and Christoph Hellwig for reporting the
      problem and testing patches (extra thanks to Sebastian for bisecting
      it to the guilty commmit).
      Tested-by: default avatarSebastian Siewior <ide-bug@ml.breakpoint.cc>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Cc: Tejun Heo <htejun@gmail.com>
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      395d8ef5
    • Kiyoshi Ueda's avatar
      ide: another possible ide panic fix for blk-end-request · 3b0e044d
      Kiyoshi Ueda authored
      I have reviewed all blk-end-request patches again to confirm whether
      there are any similar problems with the last week's ide-cd panic:
          http://lkml.org/lkml/2008/1/29/140
      
      
      
      And I found a possible similar bug in ide-io change:
      ide_end_drive_cmd() could be called for blk_pc_request() which could
      have bios.  To complete such requests correctly, we need to pass
      the actual size of the request.
      Otherwise, __blk_end_request() returns 1 because the request still has
      bios, and the system will BUG() unnecessarily.
      
      The following patch fixes the bug and should be applied on top of
      Linus' git.
      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>
      Cc: Borislav Petkov <petkovbb@googlemail.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      3b0e044d
  4. 05 Feb, 2008 2 commits
  5. 01 Feb, 2008 1 commit
  6. 28 Jan, 2008 1 commit
    • Kiyoshi Ueda's avatar
      blk_end_request: changing ide normal caller (take 4) · 5e36bb6e
      Kiyoshi Ueda authored
      
      
      This patch converts "normal" parts of ide to use blk_end_request
      interfaces.  Related 'uptodate' arguments are converted to 'error'.
      
      The conversion of 'uptodate' to 'error' is done only for the internal
      function, __ide_end_request().
      ide_end_request() was not changed since it's exported and used
      by many ide drivers.
      
      With this patch, blkdev_dequeue_request() in __ide_end_request() is
      moved to blk_end_request, since blk_end_request takes care of
      dequeueing request like below:
      
      	if (!list_empty(&rq->queuelist))
      		blkdev_dequeue_request(rq);
      
      In the case of ide,
        o 'dequeue' variable of __ide_end_request() is 1 only when the request
          is still linked to the queue (i.e. rq->queuelist is not empty)
        o 'dequeue' variable of __ide_end_request() 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 although ide always run
      thought the code above.
      
      Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      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>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      5e36bb6e
  7. 26 Jan, 2008 11 commits
  8. 25 Jan, 2008 21 commits