Messages in this thread | | | Date | Sun, 27 Mar 2011 14:00:57 +0200 | From | Jens Axboe <> | Subject | Re: [GIT PULL] Core block IO bits for 2.6.39 |
| |
On 2011-03-27 13:49, Avi Kivity wrote: > On 03/24/2011 03:43 PM, Jens Axboe wrote: >> Hi Linus, >> >> This is the main pull request for the block IO layer and friends for >> 2.6.39. >> >> There are two major things in this tree: >> >> - The removal of the per-device plugging state for disks. On fast >> devices, it ended up hammering the queue lock quite hard. The new >> scheme puts the plugging state on the stack and allows an IO submitter >> to finish his batch of IO before pushing it to the queue. Once that >> push starts, we'll insert/merge with the existing queue. >> >> A pointer to this plugging context is stored in the task structure. If >> a task ends up blocking before it has submitted it's IO (usual cause >> would be memory allocation of some sort), the plugged list is >> auto-submitted before the task goes to sleep. > > This is the fourth "do something if preempted" hook (the other three are > kvm, cmwq, and perf). Why not use sched notifiers for this?
It's a 'if preempted', it's 'if going to sleep'. Two issues with the preempt notifiers for this, I did look into it:
- Not unconditionally available. Not a big problem, we could just do that.
- Sched out is called under the runqueue lock, and it's not safe to drop it.
But it's not a bad point, it would be nice if we could unify all these use cases and provide a notifier that works for all.
-- Jens Axboe
| |