Message ID | 20220620161153.11741-5-jack@suse.cz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: Fix IO priority mess | expand |
On 6/21/22 01:11, Jan Kara wrote: > blkcg->ioprio_set field is not really useful except for avoiding > possibly more expensive checks inside blkcg_ioprio_track(). The check > for blkcg->prio_policy being equal to POLICY_NO_CHANGE does the same > service so just remove the ioprio_set field and replace the check. > > Signed-off-by: Jan Kara <jack@suse.cz> Looks good to me. Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > --- > block/blk-ioprio.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/block/blk-ioprio.c b/block/blk-ioprio.c > index 79e797f5d194..3f605583598b 100644 > --- a/block/blk-ioprio.c > +++ b/block/blk-ioprio.c > @@ -62,7 +62,6 @@ struct ioprio_blkg { > struct ioprio_blkcg { > struct blkcg_policy_data cpd; > enum prio_policy prio_policy; > - bool prio_set; > }; > > static inline struct ioprio_blkg *pd_to_ioprio(struct blkg_policy_data *pd) > @@ -113,7 +112,6 @@ static ssize_t ioprio_set_prio_policy(struct kernfs_open_file *of, char *buf, > if (ret < 0) > return ret; > blkcg->prio_policy = ret; > - blkcg->prio_set = true; > return nbytes; > } > > @@ -193,16 +191,15 @@ static void blkcg_ioprio_track(struct rq_qos *rqos, struct request *rq, > struct ioprio_blkcg *blkcg = ioprio_blkcg_from_bio(bio); > u16 prio; > > - if (!blkcg->prio_set) > + if (blkcg->prio_policy == POLICY_NO_CHANGE) > return; > > /* > * Except for IOPRIO_CLASS_NONE, higher I/O priority numbers > * correspond to a lower priority. Hence, the max_t() below selects > * the lower priority of bi_ioprio and the cgroup I/O priority class. > - * If the cgroup policy has been set to POLICY_NO_CHANGE == 0, the > - * bio I/O priority is not modified. If the bio I/O priority equals > - * IOPRIO_CLASS_NONE, the cgroup I/O priority is assigned to the bio. > + * If the bio I/O priority equals IOPRIO_CLASS_NONE, the cgroup I/O > + * priority is assigned to the bio. > */ > prio = max_t(u16, bio->bi_ioprio, > IOPRIO_PRIO_VALUE(blkcg->prio_policy, 0));
diff --git a/block/blk-ioprio.c b/block/blk-ioprio.c index 79e797f5d194..3f605583598b 100644 --- a/block/blk-ioprio.c +++ b/block/blk-ioprio.c @@ -62,7 +62,6 @@ struct ioprio_blkg { struct ioprio_blkcg { struct blkcg_policy_data cpd; enum prio_policy prio_policy; - bool prio_set; }; static inline struct ioprio_blkg *pd_to_ioprio(struct blkg_policy_data *pd) @@ -113,7 +112,6 @@ static ssize_t ioprio_set_prio_policy(struct kernfs_open_file *of, char *buf, if (ret < 0) return ret; blkcg->prio_policy = ret; - blkcg->prio_set = true; return nbytes; } @@ -193,16 +191,15 @@ static void blkcg_ioprio_track(struct rq_qos *rqos, struct request *rq, struct ioprio_blkcg *blkcg = ioprio_blkcg_from_bio(bio); u16 prio; - if (!blkcg->prio_set) + if (blkcg->prio_policy == POLICY_NO_CHANGE) return; /* * Except for IOPRIO_CLASS_NONE, higher I/O priority numbers * correspond to a lower priority. Hence, the max_t() below selects * the lower priority of bi_ioprio and the cgroup I/O priority class. - * If the cgroup policy has been set to POLICY_NO_CHANGE == 0, the - * bio I/O priority is not modified. If the bio I/O priority equals - * IOPRIO_CLASS_NONE, the cgroup I/O priority is assigned to the bio. + * If the bio I/O priority equals IOPRIO_CLASS_NONE, the cgroup I/O + * priority is assigned to the bio. */ prio = max_t(u16, bio->bi_ioprio, IOPRIO_PRIO_VALUE(blkcg->prio_policy, 0));
blkcg->ioprio_set field is not really useful except for avoiding possibly more expensive checks inside blkcg_ioprio_track(). The check for blkcg->prio_policy being equal to POLICY_NO_CHANGE does the same service so just remove the ioprio_set field and replace the check. Signed-off-by: Jan Kara <jack@suse.cz> --- block/blk-ioprio.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)