1. 11 Apr, 2011 1 commit
    • NeilBrown's avatar
      block: splice plug list to local context · 109b8129
      NeilBrown authored
      If the request_fn ends up blocking, we could be re-entering
      the plug flush. Since the list is protected by explicitly
      not allowing schedule events, this isn't a terribly good idea.
      
      Additionally, it can cause us to recurse. As request_fn called by
      __blk_run_queue is allowed to 'schedule()' (after dropping the queue
      lock of course), it is possible to get a recursive call:
      
       schedule -> blk_flush_plug -> __blk_finish_plug -> flush_plug_list
            -> __blk_run_queue -> request_fn -> schedule
      
      We must make sure that the second schedule does not call into
      blk_flush_plug again.  So instead of leaving the list of requests on
      blk_plug->list, move them to a separate list leaving blk_plug->list
      empty.
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      109b8129
  2. 10 Apr, 2011 1 commit
  3. 09 Apr, 2011 3 commits
  4. 08 Apr, 2011 4 commits
  5. 07 Apr, 2011 19 commits
  6. 06 Apr, 2011 12 commits