summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2006-08-21 10:02:50 +0200
committerJens Axboe <axboe@suse.de>2006-08-21 10:02:50 +0200
commite014ff8d4285b81f0de0719d8eee72bc50bfd4be (patch)
tree5d60afed23d2f4ced4ccce961415cdfe15295a21 /fs
parent[PATCH] Fix current_io_context() vs set_task_ioprio() race (diff)
downloadlinux-e014ff8d4285b81f0de0719d8eee72bc50bfd4be.tar.xz
linux-e014ff8d4285b81f0de0719d8eee72bc50bfd4be.zip
[PATCH] uninline ioprio_best()
Saves 376 bytes (5 callers) for me. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'fs')
-rw-r--r--fs/ioprio.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/fs/ioprio.c b/fs/ioprio.c
index 06578311c63f..78b1deae3fa2 100644
--- a/fs/ioprio.c
+++ b/fs/ioprio.c
@@ -140,6 +140,29 @@ out:
return ret;
}
+int ioprio_best(unsigned short aprio, unsigned short bprio)
+{
+ unsigned short aclass = IOPRIO_PRIO_CLASS(aprio);
+ unsigned short bclass = IOPRIO_PRIO_CLASS(bprio);
+
+ if (!ioprio_valid(aprio))
+ return bprio;
+ if (!ioprio_valid(bprio))
+ return aprio;
+
+ if (aclass == IOPRIO_CLASS_NONE)
+ aclass = IOPRIO_CLASS_BE;
+ if (bclass == IOPRIO_CLASS_NONE)
+ bclass = IOPRIO_CLASS_BE;
+
+ if (aclass == bclass)
+ return min(aprio, bprio);
+ if (aclass > bclass)
+ return bprio;
+ else
+ return aprio;
+}
+
asmlinkage long sys_ioprio_get(int which, int who)
{
struct task_struct *g, *p;