lkml.org 
[lkml]   [2009]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 14/24] blocK: Restore barrier support for md and probably other virtual devices.
    2.6.30-stable review patch.  If anyone has any objections, please let us know.

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

    From: NeilBrown <neilb@suse.de>

    commit db64f680ba4b5c56c4be59f0698000df89ff0281 upstream.

    The next_ordered flag is only meaningful for devices that use __make_request.
    So move the test against next_ordered out of generic code and in to
    __make_request

    Since this test was added, barriers have not worked on md or any
    devices that don't use __make_request and so don't bother to set
    next_ordered. (dm explicitly sets something other than
    QUEUE_ORDERED_NONE since
    commit 99360b4c18f7675b50d283301d46d755affe75fd
    but notes in the comments that it is otherwise meaningless).

    Cc: Ken Milmore <ken.milmore@googlemail.com>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    block/blk-core.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    --- a/block/blk-core.c
    +++ b/block/blk-core.c
    @@ -1158,6 +1158,11 @@ static int __make_request(struct request

    nr_sectors = bio_sectors(bio);

    + if (bio_barrier(bio) && bio_has_data(bio) &&
    + (q->next_ordered == QUEUE_ORDERED_NONE)) {
    + bio_endio(bio, -EOPNOTSUPP);
    + return 0;
    + }
    /*
    * low level driver can indicate that it wants pages above a
    * certain limit bounced to low memory (ie for highmem, or even
    @@ -1461,11 +1466,6 @@ static inline void __generic_make_reques
    err = -EOPNOTSUPP;
    goto end_io;
    }
    - if (bio_barrier(bio) && bio_has_data(bio) &&
    - (q->next_ordered == QUEUE_ORDERED_NONE)) {
    - err = -EOPNOTSUPP;
    - goto end_io;
    - }

    ret = q->make_request_fn(q, bio);
    } while (ret);



    \
     
     \ /
      Last update: 2009-07-17 22:33    [W:0.032 / U:2.568 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site