20 Dec, 2005

1 commit


22 Nov, 2005

1 commit

  • Kill the arq->state poison statement in as_add_request(), it can trigger
    for perfectly valid code that just reuses a request after io completion
    instead of freeing it and allocating a new one. We probably should
    introduce a blk_init_request() to start from scratch, but for now just
    kill it as we will be removing the as specific poisoning soon.

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     

19 Nov, 2005

1 commit


12 Nov, 2005

10 commits

  • With generic dispatch queue update, implicit former/latter request
    handling using rq->queuelist.prev/next doesn't work as expected
    anymore. Also, the only iosched dependent on this feature was
    noop-iosched and it has been reimplemented to have its own
    latter/former methods. This patch removes implicit former/latter
    handling.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • The original implementation directly used dispatch queue. As new
    generic dispatch queue imposes stricter rules over ioscheds and
    dispatch queue usage, this direct use becomes somewhat problematic.
    This patch reimplements noop-iosched such that it complies to generic
    iosched model better. Request merging with q->last_merge and
    rq->queuelist.prev/next work again now.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe <axboe@suse.de

    Tejun Heo
     
  • When cfq slice expires, remainder of slice is calculated and stored in
    cfqq->slice_left. Current code calculates the opposite of remainder -
    how many jiffies the cfqq has used past slice end. This patch fixes
    the bug.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • elv_iosched_store doesn't terminate string passed from userspace if
    it's too long. Also, if the written length is zero (probably not
    possible), it accesses elevator_name[-1]. This patch fixes both bugs.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • This patch adds request_queue->nr_sorted which keeps the number of
    requests in the iosched and implement elv_drain_elevator which
    performs forced dispatching. elv_drain_elevator checks whether
    iosched actually dispatches all requests it has and prints error
    message if it doesn't. As buggy forced dispatching can result in
    wrong barrier operations, I think this extra check is worthwhile.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • cfq forced dispatching might not return all requests on the queue.
    This bug can hang elevator switchinig and corrupt request ordering
    during flush sequence.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • elevator_dispatch needs to run queue after forced dispatching;
    otherwise, the queue might stall.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • Use the symbolic name where appropriate and add a comment to the
    disk_stats structure.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • In addition to the first patch, which is probably goodness, I found the
    cause of my panic - applying this patch fixes it and now I am booting.
    If the chosen_elevator[] is not found, fall back to noop.

    Signed-off-by: Andrew Morton
    Signed-off-by: Jens Axboe

    Zachary Amsden
     
  • I got a panic in the elevator code, backtrace :

    Unable to handle kernel NULL pointer dereference at virtual address 00000060
    ..
    EIP is at elevator_put+0x0/0x30 (null elevator_type passed)
    ..
    elevator_init+0x38
    blk_init_queu_node+0xc9
    floppy_init+0xdb
    do_initcalls+0x23
    init+0x10a
    init+0x0

    Clearly if the kmalloc here fails, e->elevator_type is not yet set; this
    appears to be the correct fix, but I think I probably hit the second case
    due to a race condition. Someone more familiar with the elevator code
    should look at this more closely until I can determine if I can reproduce.

    Signed-off-by: Zachary Amsden
    Signed-off-by: Andrew Morton
    Signed-off-by: Jens Axboe

    Zachary Amsden
     

08 Nov, 2005

1 commit


04 Nov, 2005

2 commits