Skip to content
  • Jeff Moyer's avatar
    iosched: prevent aliased requests from starving other I/O · 796d5116
    Jeff Moyer authored
    Hi, Jens,
    
    If you recall, I posted an RFC patch for this back in July of last year:
    http://lkml.org/lkml/2010/7/13/279
    
    
    
    The basic problem is that a process can issue a never-ending stream of
    async direct I/Os to the same sector on a device, thus starving out
    other I/O in the system (due to the way the alias handling works in both
    cfq and deadline).  The solution I proposed back then was to start
    dispatching from the fifo after a certain number of aliases had been
    dispatched.  Vivek asked why we had to treat aliases differently at all,
    and I never had a good answer.  So, I put together a simple patch which
    allows aliases to be added to the rb tree (it adds them to the right,
    though that doesn't matter as the order isn't guaranteed anyway).  I
    think this is the preferred solution, as it doesn't break up time slices
    in CFQ or batches in deadline.  I've tested it, and it does solve the
    starvation issue.  Let me know what you think.
    
    Cheers,
    Jeff
    
    Signed-off-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
    796d5116