summary refs log tree commit diff
path: root/fs/ioprio.c
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/ioprio.c
parent9f83e45eb54fc7198dc59fc63255341851ba4c48 (diff)
downloadlinux-e014ff8d4285b81f0de0719d8eee72bc50bfd4be.tar.gz
[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/ioprio.c')
-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;