Loading block/cfq-iosched.c +1 −1 Original line number Diff line number Diff line Loading @@ -1561,7 +1561,7 @@ cfq_cic_link(struct cfq_data *cfqd, struct io_context *ioc, /* ->key must be copied to avoid race with cfq_exit_queue() */ k = __cic->key; if (unlikely(!k)) { cfq_drop_dead_cic(ioc, cic); cfq_drop_dead_cic(ioc, __cic); goto restart; } Loading block/ll_rw_blk.c +2 −0 Original line number Diff line number Diff line Loading @@ -3628,6 +3628,8 @@ struct io_context *current_io_context(gfp_t gfp_flags) ret->nr_batch_requests = 0; /* because this is 0 */ ret->aic = NULL; ret->cic_root.rb_node = NULL; /* make sure set_task_ioprio() sees the settings above */ smp_wmb(); tsk->io_context = ret; } Loading fs/ioprio.c +28 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,9 @@ static int set_task_ioprio(struct task_struct *task, int ioprio) task->ioprio = ioprio; ioc = task->io_context; /* see wmb() in current_io_context() */ smp_read_barrier_depends(); if (ioc && ioc->set_ioprio) ioc->set_ioprio(ioc, ioprio); Loading Loading @@ -111,9 +114,9 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio) continue; ret = set_task_ioprio(p, ioprio); if (ret) break; goto free_uid; } while_each_thread(g, p); free_uid: if (who) free_uid(user); break; Loading @@ -137,6 +140,29 @@ static int get_task_ioprio(struct task_struct *p) 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; Loading include/linux/ioprio.h +1 −22 Original line number Diff line number Diff line Loading @@ -59,27 +59,6 @@ static inline int task_nice_ioprio(struct task_struct *task) /* * For inheritance, return the highest of the two given priorities */ static inline 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; } extern int ioprio_best(unsigned short aprio, unsigned short bprio); #endif Loading
block/cfq-iosched.c +1 −1 Original line number Diff line number Diff line Loading @@ -1561,7 +1561,7 @@ cfq_cic_link(struct cfq_data *cfqd, struct io_context *ioc, /* ->key must be copied to avoid race with cfq_exit_queue() */ k = __cic->key; if (unlikely(!k)) { cfq_drop_dead_cic(ioc, cic); cfq_drop_dead_cic(ioc, __cic); goto restart; } Loading
block/ll_rw_blk.c +2 −0 Original line number Diff line number Diff line Loading @@ -3628,6 +3628,8 @@ struct io_context *current_io_context(gfp_t gfp_flags) ret->nr_batch_requests = 0; /* because this is 0 */ ret->aic = NULL; ret->cic_root.rb_node = NULL; /* make sure set_task_ioprio() sees the settings above */ smp_wmb(); tsk->io_context = ret; } Loading
fs/ioprio.c +28 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,9 @@ static int set_task_ioprio(struct task_struct *task, int ioprio) task->ioprio = ioprio; ioc = task->io_context; /* see wmb() in current_io_context() */ smp_read_barrier_depends(); if (ioc && ioc->set_ioprio) ioc->set_ioprio(ioc, ioprio); Loading Loading @@ -111,9 +114,9 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio) continue; ret = set_task_ioprio(p, ioprio); if (ret) break; goto free_uid; } while_each_thread(g, p); free_uid: if (who) free_uid(user); break; Loading @@ -137,6 +140,29 @@ static int get_task_ioprio(struct task_struct *p) 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; Loading
include/linux/ioprio.h +1 −22 Original line number Diff line number Diff line Loading @@ -59,27 +59,6 @@ static inline int task_nice_ioprio(struct task_struct *task) /* * For inheritance, return the highest of the two given priorities */ static inline 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; } extern int ioprio_best(unsigned short aprio, unsigned short bprio); #endif