• Tejun Heo's avatar
    block: reorder elevator switch sequence · f8fc877d
    Tejun Heo authored
    Elevator switch sequence first attached the new elevator, then tried
    registering it (sysfs) and if that failed attached back the old
    elevator.  However, sysfs registration doesn't require the elevator to
    be attached, so there is no reason to do the "detach, attach new,
    register, maybe re-attach old" sequence.  It can just do "register,
    detach, attach".
    
    * elevator_init_queue() is updated to set ->elevator_data directly and
      return 0 / -errno.  This allows elevator_exit() on an unattached
      elevator.
    
    * __elv_unregister_queue() which was necessary to unregister
      unattached q is removed in favor of __elv_register_queue() which can
      register unattached q.
    
    * elevator_attach() becomes a single assignment and obscures more then
      it helps.  Dropped.
    
    This will help cleaning up io_context handling across elevator switch.
    
    This patch doesn't introduce visible behavior change.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    f8fc877d
elevator.c 23.7 KB