]> git.baikalelectronics.ru Git - kernel.git/commitdiff
block: Return effective IO priority from get_current_ioprio()
authorJan Kara <jack@suse.cz>
Thu, 23 Jun 2022 07:48:27 +0000 (09:48 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 27 Jun 2022 12:29:12 +0000 (06:29 -0600)
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.

Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220623074840.5960-2-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/ioprio.h

index 3d088a88f83202c3523ceebe226ee9c2be1dc27b..61ed6bb4998ebbc9b8464fbb63f0e80cf5f9fd0c 100644 (file)
@@ -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;
 }
 
 /*