lkml.org 
[lkml]   [2014]   [Nov]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 162/254] block: Fix computation of merged request priority
    Date
    3.16.7-ckt2 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jan Kara <jack@suse.cz>

    commit ece9c72accdc45c3a9484dacb1125ce572647288 upstream.

    Priority of a merged request is computed by ioprio_best(). If one of the
    requests has undefined priority (IOPRIO_CLASS_NONE) and another request
    has priority from IOPRIO_CLASS_BE, the function will return the
    undefined priority which is wrong. Fix the function to properly return
    priority of a request with the defined priority.

    Fixes: d58cdfb89ce0c6bd5f81ae931a984ef298dbda20
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    block/ioprio.c | 14 ++++++++------
    1 file changed, 8 insertions(+), 6 deletions(-)

    diff --git a/block/ioprio.c b/block/ioprio.c
    index e50170ca7c33..31666c92b46a 100644
    --- a/block/ioprio.c
    +++ b/block/ioprio.c
    @@ -157,14 +157,16 @@ out:

    int ioprio_best(unsigned short aprio, unsigned short bprio)
    {
    - unsigned short aclass = IOPRIO_PRIO_CLASS(aprio);
    - unsigned short bclass = IOPRIO_PRIO_CLASS(bprio);
    + unsigned short aclass;
    + unsigned short bclass;

    - if (aclass == IOPRIO_CLASS_NONE)
    - aclass = IOPRIO_CLASS_BE;
    - if (bclass == IOPRIO_CLASS_NONE)
    - bclass = IOPRIO_CLASS_BE;
    + if (!ioprio_valid(aprio))
    + aprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, IOPRIO_NORM);
    + if (!ioprio_valid(bprio))
    + bprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, IOPRIO_NORM);

    + aclass = IOPRIO_PRIO_CLASS(aprio);
    + bclass = IOPRIO_PRIO_CLASS(bprio);
    if (aclass == bclass)
    return min(aprio, bprio);
    if (aclass > bclass)
    --
    2.1.0


    \
     
     \ /
      Last update: 2014-11-25 12:42    [W:3.125 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site