On Mon 20-02-23 21:54:28, Hou Tao wrote: > From: Hou Tao <houtao1@xxxxxxxxxx> > > Since commit a78418e6a04c ("block: Always initialize bio IO priority on > submit"), bio->bi_ioprio will never be IOPRIO_CLASS_NONE when calling > blkcg_set_ioprio(), so there will be no way to promote the io-priority > of one cgroup to IOPRIO_CLASS_RT, because bi_ioprio will always be > greater than or equals to IOPRIO_CLASS_RT. > > It seems possible to call blkcg_set_ioprio() first then try to > initialize bi_ioprio later in bio_set_ioprio(), but this doesn't work > for bio in which bi_ioprio is already initialized (e.g., direct-io), so > introduce a new ioprio policy to promote the iopriority of bio to > IOPRIO_CLASS_RT if the ioprio is not already RT. > > So introduce a new promote-to-rt policy to achieve this. For none-to-rt > policy, although it doesn't work now, but considering that its purpose > was also to override the io-priority to RT and allow for a smoother > transition, just keep it and treat it as an alias of the promote-to-rt > policy. > > Signed-off-by: Hou Tao <houtao1@xxxxxxxxxx> Looks good to me. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Just one question regarding doc below: > ++----------------+---+ > +| no-change | 0 | > ++----------------+---+ > +| rt-to-be | 2 | > ++----------------+---+ > +| all-to-idle | 3 | > ++----------------+---+ Shouldn't there be preempt-to-rt somewhere in this table as well? Or why this this in the doc at all? I'd consider the numbers to be kernel internal thing? Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR