1. 03 12月, 2008 1 次提交
    • T
      block: internal dequeue shouldn't start timer · 53a08807
      Tejun Heo 提交于
      blkdev_dequeue_request() and elv_dequeue_request() are equivalent and
      both start the timeout timer.  Barrier code dequeues the original
      barrier request but doesn't passes the request itself to lower level
      driver, only broken down proxy requests; however, as the original
      barrier code goes through the same dequeue path and timeout timer is
      started on it.  If barrier sequence takes long enough, this timer
      expires but the low level driver has no idea about this request and
      oops follows.
      
      Timeout timer shouldn't have been started on the original barrier
      request as it never goes through actual IO.  This patch unexports
      elv_dequeue_request(), which has no external user anyway, and makes it
      operate on elevator proper w/o adding the timer and make
      blkdev_dequeue_request() call elv_dequeue_request() and add timer.
      Internal users which don't pass the request to driver - barrier code
      and end_that_request_last() - are converted to use
      elv_dequeue_request().
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Mike Anderson <andmike@linux.vnet.ibm.com>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      53a08807
  2. 09 10月, 2008 4 次提交
  3. 01 5月, 2008 1 次提交
  4. 29 4月, 2008 3 次提交
    • F
      block: rename and export rq_init() · 2a4aa30c
      FUJITA Tomonori 提交于
      This rename rq_init() blk_rq_init() and export it. Any path that hands
      the request to the block layer needs to call it to initialize the
      request.
      
      This is a preparation for large command support, which needs to
      initialize the request in a proper way (that is, just doing a memset()
      will not work).
      Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      2a4aa30c
    • A
      block/blk-barrier.c:blk_ordered_cur_seq() mustn't be inline · 6f6a036e
      Adrian Bunk 提交于
      This patch fixes the following build error with UML and gcc 4.3:
      
      <--  snip  -->
      
      ...
        CC      block/blk-barrier.o
      /home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c: In function ‘blk_do_ordered’:
      /home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:57: sorry, unimplemented: inlining failed in call to ‘blk_ordered_cur_seq’: function body not available
      /home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:252: sorry, unimplemented: called from here
      /home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:57: sorry, unimplemented: inlining failed in call to ‘blk_ordered_cur_seq’: function body not available
      /home/bunk/linux/kernel-2.6/git/linux-2.6/block/blk-barrier.c:253: sorry, unimplemented: called from here
      make[2]: *** [block/blk-barrier.o] Error 1
      
      <--  snip  -->
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      6f6a036e
    • F
      block: make rq_init() do a full memset() · 1afb20f3
      FUJITA Tomonori 提交于
      This requires moving rq_init() from get_request() to blk_alloc_request().
      The upside is that we can now require an rq_init() from any path that
      wishes to hand the request to the block layer.
      
      rq_init() will be exported for the code that uses struct request
      without blk_get_request.
      
      This is a preparation for large command support, which needs to
      initialize struct request in a proper way (that is, just doing a
      memset() will not work).
      Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      1afb20f3
  5. 04 3月, 2008 1 次提交
  6. 01 2月, 2008 1 次提交
  7. 30 1月, 2008 1 次提交