Jens Axboe <axboe@xxxxxx> writes: > At Facebook, we have a number of cases where people use ionice to set a > lower priority, then end up having tasks stuck for a long time because > eg meta data updates from an idle priority tasks is blocking out higher > priority processes. It's bad enough that it will trigger the softlockup > warning. > > This patch adds code to CFQ that bumps the priority class and data for > an idle task, if is doing IO marked as PRIO or META. With this, we no > longer see the softlockups. > > Signed-off-by: Jens Axboe <axboe@xxxxxx> > > diff --git a/block/blk-core.c b/block/blk-core.c > index 32a283eb7274..3cfd67d006fb 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -1781,6 +1781,11 @@ get_rq: > rw_flags |= REQ_SYNC; > > /* > + * Add in META/PRIO flags, if set, before we get to the IO scheduler > + */ > + rw_flags |= (bio->bi_rw & (REQ_META | REQ_PRIO)); > + > + /* This needs a docbook update. It now reads: * @rw_flags: RW and SYNC flags so whatever flags we're adding should be specified, I guess. Speaking of which, after much waffling, I think I've decided it would be cleaner to limit the priority boost to REQ_PRIO requests only. Other than that, I think this looks fine. Cheers, Jeff -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html