|
@@ -140,6 +140,29 @@ out:
|
|
return ret;
|
|
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)
|
|
asmlinkage long sys_ioprio_get(int which, int who)
|
|
{
|
|
{
|
|
struct task_struct *g, *p;
|
|
struct task_struct *g, *p;
|