Message ID | 20220623074840.5960-2-jack@suse.cz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: Fix IO priority mess | expand |
On Thu, Jun 23, 2022 at 09:48:27AM +0200, 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. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
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; } /*