Message ID | 20220620161153.11741-2-jack@suse.cz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: Fix IO priority mess | expand |
On 6/21/22 01:11, Jan Kara wrote: > get_current_ioprio() is used to initialize IO priority of various > requests. As such it should be returning the effective IO priority of > the task (i.e., reflecting the fact that unset IO priority should get > set based on task's CPU priority) so that the conversion is concentrated > in one place. > > Signed-off-by: Jan Kara <jack@suse.cz> > --- > include/linux/ioprio.h | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h > index 3d088a88f832..61ed6bb4998e 100644 > --- a/include/linux/ioprio.h > +++ b/include/linux/ioprio.h > @@ -53,10 +53,17 @@ static inline int task_nice_ioclass(struct task_struct *task) > static inline int get_current_ioprio(void) > { > struct io_context *ioc = current->io_context; > + int prio; > > if (ioc) > - return ioc->ioprio; > - return IOPRIO_DEFAULT; > + prio = ioc->ioprio; > + else > + prio = IOPRIO_DEFAULT; > + > + if (IOPRIO_PRIO_CLASS(prio) == IOPRIO_CLASS_NONE) > + prio = IOPRIO_PRIO_VALUE(task_nice_ioclass(current), > + task_nice_ioprio(current)); > + return prio; > } > > /* Looks good to me. Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h index 3d088a88f832..61ed6bb4998e 100644 --- a/include/linux/ioprio.h +++ b/include/linux/ioprio.h @@ -53,10 +53,17 @@ static inline int task_nice_ioclass(struct task_struct *task) static inline int get_current_ioprio(void) { struct io_context *ioc = current->io_context; + int prio; if (ioc) - return ioc->ioprio; - return IOPRIO_DEFAULT; + prio = ioc->ioprio; + else + prio = IOPRIO_DEFAULT; + + if (IOPRIO_PRIO_CLASS(prio) == IOPRIO_CLASS_NONE) + prio = IOPRIO_PRIO_VALUE(task_nice_ioclass(current), + task_nice_ioprio(current)); + return prio; } /*
get_current_ioprio() is used to initialize IO priority of various requests. As such it should be returning the effective IO priority of the task (i.e., reflecting the fact that unset IO priority should get set based on task's CPU priority) so that the conversion is concentrated in one place. Signed-off-by: Jan Kara <jack@suse.cz> --- include/linux/ioprio.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)