1. 30 Sep, 2006 7 commits
  2. 22 Aug, 2006 1 commit
  3. 30 Jun, 2006 1 commit
  4. 23 Jun, 2006 1 commit
  5. 08 Jun, 2006 1 commit
    • Jens Axboe's avatar
      [PATCH] elevator switching race · bc1c1169
      Jens Axboe authored
      There's a race between shutting down one io scheduler and firing up the
      next, in which a new io could enter and cause the io scheduler to be
      invoked with bad or NULL data.
      
      To fix this, we need to maintain the queue lock for a bit longer.
      Unfortunately we cannot do that, since the elevator init requires to be
      run without the lock held.  This isn't easily fixable, without also
      changing the mempool API.  So split the initialization into two parts,
      and alloc-init operation and an attach operation.  Then we can
      preallocate the io scheduler and related structures, and run the attach
      inside the lock after we detach the old one.
      
      This patch has survived 30 minutes of 1 second io scheduler switching
      with a very busy io load.
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      bc1c1169
  6. 11 May, 2006 1 commit
    • Jens Axboe's avatar
      [BLOCK] limit request_fn recursion · dac07ec1
      Jens Axboe authored
      Don't recurse back into the driver even if the unplug threshold is met,
      when the driver asks for a requeue. This is both silly from a logical
      point of view (requeues typically happen due to driver/hardware
      shortage), and also dangerous since we could hit an endless request_fn
      -> requeue -> unplug -> request_fn loop and crash on stack overrun.
      
      Also limit blk_run_queue() to one level of recursion, similar to how
      blk_start_queue() works.
      
      This patch fixed a real problem with SLES10 and lpfc, and it could hit
      any SCSI lld that returns non-zero from it's ->queuecommand() handler.
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      dac07ec1
  7. 20 Apr, 2006 1 commit
  8. 31 Mar, 2006 1 commit
    • OGAWA Hirofumi's avatar
      [PATCH] Don't pass boot parameters to argv_init[] · 9b41046c
      OGAWA Hirofumi authored
      The boot cmdline is parsed in parse_early_param() and
      parse_args(,unknown_bootoption).
      
      And __setup() is used in obsolete_checksetup().
      
      	start_kernel()
      		-> parse_args()
      			-> unknown_bootoption()
      				-> obsolete_checksetup()
      
      If __setup()'s callback (->setup_func()) returns 1 in
      obsolete_checksetup(), obsolete_checksetup() thinks a parameter was
      handled.
      
      If ->setup_func() returns 0, obsolete_checksetup() tries other
      ->setup_func().  If all ->setup_func() that matched a parameter returns 0,
      a parameter is seted to argv_init[].
      
      Then, when runing /sbin/init or init=app, argv_init[] is passed to the app.
      If the app doesn't ignore those arguments, it will warning and exit.
      
      This patch fixes a wrong usage of it, however fixes obvious one only.
      Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9b41046c
  9. 24 Mar, 2006 1 commit
  10. 23 Mar, 2006 1 commit
  11. 18 Mar, 2006 3 commits
  12. 08 Feb, 2006 1 commit
  13. 05 Feb, 2006 1 commit
  14. 24 Jan, 2006 2 commits
    • Nate Diller's avatar
      [BLOCK] elevator: allow default scheduler to potentially be modular · 248d5ca5
      Nate Diller authored
      Jens has decided that allowing the default scheduler to be a module is
      a bug, and should not be allowed under kconfig.  However, I find that
      scenario useful for debugging, and wish for the kernel to be able to
      handle this situation without OOPSing, if I enable such an option in
      the .config directly.  This patch dynamically checks for the presence
      of the compiled-in default, and falls back to no-op, emitting a
      suitable error message, when the default is not available
      
      Tested for a range of boot options on 2.6.16-rc1-mm2.
      Signed-off-by: default avatarNate Diller <nate.diller@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      248d5ca5
    • Nate Diller's avatar
      [BLOCK] elevator: default choice selection · 5f003976
      Nate Diller authored
      My previous default iosched patch did a poor job dealing with the
      'elevator=' boot-time option.  The old behavior falls back to the
      compiled-in default if the requested one is not registered at boot
      time.  This patch dynamically evaluates which default
      to use, and emits a suitable error message when the requested scheduler
      is not available.  It also does the 'as' -> 'anticipatory' conversion
      before elevator registration, which along with a modified registration
      function, allows it to correctly indicate which default scheduler is
      in use.
      
      Tested for a range of boot options on 2.6.16-rc1-mm2.
      Signed-off-by: default avatarNate Diller <nate.diller@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      5f003976
  15. 17 Jan, 2006 1 commit
  16. 16 Jan, 2006 2 commits
  17. 12 Jan, 2006 1 commit
    • Tejun Heo's avatar
      [PATCH] fix queue stalling while barrier sequencing · 1bc691d3
      Tejun Heo authored
      If ordered tag isn't supported, request ordering for barrier
      sequencing is performed by queue draining, which basically hangs the
      request queue until elv_completed_request() reports completion of all
      previous fs requests.
      
      The condition check in elv_completed_request() was only performed for
      fs requests.  If a special request is queued between the last
      to-be-drained request and the barrier sequence, draining is never
      completed and the queue is stalled forever.
      
      This patch moves the end-of-draining condition check such that it's
      performed for all requests.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      1bc691d3
  18. 09 Jan, 2006 1 commit
  19. 06 Jan, 2006 2 commits
    • Tejun Heo's avatar
      [BLOCK] reimplement handling of barrier request · 797e7dbb
      Tejun Heo authored
      Reimplement handling of barrier requests.
      
      * Flexible handling to deal with various capabilities of
        target devices.
      * Retry support for falling back.
      * Tagged queues which don't support ordered tag can do ordered.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      797e7dbb
    • Tejun Heo's avatar
      [BLOCK] add @uptodate to end_that_request_last() and @error to rq_end_io_fn() · 8ffdc655
      Tejun Heo authored
      add @uptodate argument to end_that_request_last() and @error
      to rq_end_io_fn().  there's no generic way to pass error code
      to request completion function, making generic error handling
      of non-fs request difficult (rq->errors is driver-specific and
      each driver uses it differently).  this patch adds @uptodate
      to end_that_request_last() and @error to rq_end_io_fn().
      
      for fs requests, this doesn't really matter, so just using the
      same uptodate argument used in the last call to
      end_that_request_first() should suffice.  imho, this can also
      help the generic command-carrying request jens is working on.
      Signed-off-by: default avatartejun heo <htejun@gmail.com>
      Signed-Off-By: default avatarJens Axboe <axboe@suse.de>
      8ffdc655
  20. 18 Nov, 2005 1 commit
  21. 12 Nov, 2005 6 commits
  22. 04 Nov, 2005 1 commit
  23. 01 Nov, 2005 1 commit
    • Tejun Heo's avatar
      [PATCH] blk: fix dangling pointer access in __elv_add_request · ca23509f
      Tejun Heo authored
      cfq's add_req_fn callback may invoke q->request_fn directly and
      depending on low-level driver used and timing, a queued request may be
      finished & deallocated before add_req_fn callback returns.  So,
      __elv_add_request must not access rq after it's passed to add_req_fn
      callback.
      
      This patch moves rq_mergeable test above add_req_fn().  This may
      result in q->last_merge pointing to REQ_NOMERGE request if add_req_fn
      callback sets it but as RQ_NOMERGE is checked again when blk layer
      actually tries to merge requests, this does not cause any problem.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ca23509f
  24. 30 Oct, 2005 1 commit