[lkml]   [2005]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[PATCH linux-2.6-block:post-2.6.15 00/11] blk: reimplementation of I/O barrier
    Hello, Jens, James, Jeff and Bartlomiej.

    This is the sixth posting of blk ordered reimplementation. The last
    posting was on 17th, Nov.

    Changes from the previous post are...

    1. Proxy requests (pre_flush_rq, bar_rq and post_flush_rq) are inlined
    into request_queue such that blk_queue_ordered doesn't have to
    allocate when changing ordered mode. This change removes @gfp_mask
    argument from blk_queue_ordered. Also, there's no need to reset
    ordered to NONE when a device goes offline anymore. So, changes to
    to ->remove or ->release callbacks are gone.

    2. blk_queue_ordered() does not synchronize using queuelock.
    Synchronization is now the caller's responsibility. It's still
    perfectly safe to call blk_queue_ordered() without any
    synchronization. The worst that can happen is wrong ordered
    sequence issued around the call.

    3. Note that queuelock is not enough for proper ordered-mode change
    synchronization. Currently, there's no block driver which requires
    this. Drivers either don't change ordered mode during operation or
    doesn't properly synchronize configuration changes in the first
    place (IDE).

    This change removes for blk_queue_ordered_locked() function.

    4. IDE ordered/fua support has been updated. As IDE supports dynamic
    configuration change from EH and user input, ordered/fua settings
    should also be changed accordingly. New IDE HL driver callback
    ->protocol_changed is implmemented and used to properly configure
    ordered mode on configuration changes.

    Jens, #1 and #2 are changes to core ordered code but they are quite
    simple changes. There shouldn't be any behavior change.

    Bartlomiej, IDE ordered/fua support is now splitted over three patches
    08-ide-update-ordered, 09-ide-add-protocol_changed and
    10-ide-add-fua-support. I think #08 should be okay, but if you don't
    like #09 and #10, we can skip them for now. So....

    If #09 and #10 are ack'd, we can push all patches into -mm. If #09
    and #10 are nack'd, we can push all patches except the two into -mm.


    [ Start of patch descriptions ]

    : add @uptodate to end_that_request_last() and @error to rq_end_io_fn()

    Add @uptodate argument to end_that_request_last() and @error
    to rq_end_io_fn(). There's no generic way to pass error code
    to request completion function, making generic error handling
    of non-fs request difficult (rq->errors is driver-specific and
    each driver uses it differently). This patch adds @uptodate
    to end_that_request_last() and @error to rq_end_io_fn().

    For fs requests, this doesn't really matter, so just using the
    same uptodate argument used in the last call to
    end_that_request_first() should suffice. IMHO, this can also
    help the generic command-carrying request Jens is working on.

    : separate out bio init part from __make_request

    Separate out bio initialization part from __make_request. It
    will be used by the following blk_ordered_reimpl.

    : reimplement handling of barrier request

    Reimplement handling of barrier requests.

    * Flexible handling to deal with various capabilities of
    target devices.
    * Retry support for falling back.
    * Tagged queues which don't support ordered tag can do ordered.

    : update SCSI to use new blk_ordered

    All ordered request related stuff delegated to HLD. Midlayer
    now doens't deal with ordered setting or prepare_flush
    callback. sd.c updated to deal with blk_queue_ordered
    setting. Currently, ordered tag isn't used as SCSI midlayer
    cannot guarantee request ordering.

    : add FUA support to SCSI disk

    Add FUA support to SCSI disk.

    : update libata to use new blk_ordered

    Reflect changes in SCSI midlayer and updated to use new
    ordered request implementation

    : add FUA support to libata

    Add FUA support to libata.

    : update IDE to use new blk_ordered

    Update IDE to use new blk_ordered. This change makes the
    following behavior changes.

    * Partial completion of the barrier request is handled as
    failure of the whole ordered sequence. No more partial
    completion for barrier requests.

    * Any failure of pre or post flush request results in failure
    of the whole ordered sequence.

    So, successfully completed ordered sequence guarantees that
    all requests prior to the barrier made to physical medium and,
    then, the while barrier request made to the physical medium.

    : implement ide_driver_t->protocol_changed callback

    This patch implements protocol_changed callback for IDE HL
    drivers. The callback is called whenever transfer protocol
    changes (DMA / multisector PIO / PIO). The callback is
    sometimes with context and sometimes without, sometimes with
    queuelock, sometimes not. So, actual callbacks should be
    written carefully.

    To hook dma setting changes, this function implements
    ide_dma_on() and ide_dma_off_quietly() which notifies protocl
    change and calls low level driver callback. __ide_dma_off()
    is renamed to ide_dma_off() for consistency. All dma on/off
    operations must be done by using these wrapper functions.

    : add FUA support to IDE

    Add FUA support to IDE. IDE FUA support makes use of
    ->protocol_changed callback to correctly adjust FUA setting
    according to transfer protocol change.

    : I/O barrier documentation

    I/O barrier documentation

    [ End of patch descriptions ]


    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-11-24 17:28    [W:0.030 / U:0.028 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site