lkml.org 
[lkml]   [2002]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: cpqarray broken since 2.5.19

    On Wed, 24 Jul 2002, Marcin Dalecki wrote:

    > Bartlomiej Zolnierkiewicz wrote:
    > > On Wed, 24 Jul 2002, Jens Axboe wrote:
    > >
    > >
    > >>On Wed, Jul 24 2002, Marcin Dalecki wrote:
    > >>
    > >>>>Jens, the same is in cciss.c.
    > >>>>Please remove locking from blk_stop_queue() (as you suggested) or intrduce
    > >>>>unlocking in request_functions.
    > >>>>
    > >>>
    > >>>Bartek I think the removal is just for reassertion that the
    > >>>locking is the problem. You can't remove it easly from
    > >>>blk_stop_queue() unless you make it mandatory that blk_stop_queue
    > >>>has to be run with the lock already held. Or in other words
    > >>>basically -> Don't use blk_stop_queue() outside of ->request_fn.
    > >>
    > >>Of couse Bart is advocating just making sure that every caller of
    > >>blk_stop_queue() _has_ the queue_lock before calling it, not removing
    > >>the locking there.
    > >>
    > >>--
    > >>Jens Axboe
    > >
    > >
    > > And I'm also advocating for __blk_start_queue() ideal for usage in
    > > ata_end_request(). And moving spin_lock scope to cover test_and_set_bit()
    > > in blk_start_queue() (for coherency and avoiding spurious calls to
    > > q->request_fn() )
    >
    > You mean this:
    >
    > void blk_start_queue(request_queue_t *q)
    > {
    > if (test_bit(QUEUE_FLAG_STOPPED, &q->queue_flags)) {
    > unsigned long flags;
    >
    > spin_lock_irqsave(q->queue_lock, flags);
    > if (!test_bit(QUEUE_FLAG_STOPPED, &q->queue_flags)) {
    > spin_unlock_irqrestore(q->queue_lock, flags);
    > return;
    > }
    > clear_bit(QUEUE_FLAG_STOPPED, &q->queue_flags);
    > if (!elv_queue_empty(q))
    > q->request_fn(q);
    > spin_unlock_irqrestore(q->queue_lock, flags);
    > }
    > }

    No I mean full locking version. Look at usage context - queue will be
    almost (== queueing drivers) stopped.

    > Becouse this is avoiding checking for spinlock in the case
    > the queue is not stopped.
    >
    > The spinlock free variant isn't needed right.

    Is needed/helpful.

    > > However IDE_BUSY -> QUEUE_STOPPED_FLAG is braindamaged idea.
    >
    > You should never see it. Think of it as a mind bridge between
    > IDE_BUSY and queue plug and unplug please. Becouse the purpose
    > of IDE_BUSY *is* to effectively stall queue processing for
    > the time of internally issued request. OK?

    I don't care == I'm tired of bullshit.

    --
    Bartlomiej

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:27    [W:0.053 / U:31.684 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site