02 Feb, 2006

1 commit

  • Record I/O timing statistics

    The start time is added to struct dm_io, an existing structure allocated
    privately internally within dm and attached to each incoming bio.

    We export disk_round_stats() from block/ll_rw_blk.c instead of creating a
    private clone.

    Signed-off-by: Jun'ichi "Nick" Nomura
    Signed-off-by: Alasdair G Kergon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jun'ichi "Nick" Nomura
     

31 Jan, 2006

1 commit


24 Jan, 2006

5 commits


16 Jan, 2006

2 commits


15 Jan, 2006

1 commit

  • A Christoph suggested that the /proc/devices file be converted to use the
    seq_file interface. This patch does that.

    I've obxerved one or two installation that had sufficiently large sans that
    they overran the 4k limit on /proc/devices.

    Signed-off-by: Neil Horman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Neil Horman
     

13 Jan, 2006

1 commit

  • If ordered tag isn't supported, request ordering for barrier
    sequencing is performed by queue draining, which basically hangs the
    request queue until elv_completed_request() reports completion of all
    previous fs requests.

    The condition check in elv_completed_request() was only performed for
    fs requests. If a special request is queued between the last
    to-be-drained request and the barrier sequence, draining is never
    completed and the queue is stalled forever.

    This patch moves the end-of-draining condition check such that it's
    performed for all requests.

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

    Tejun Heo
     

12 Jan, 2006

1 commit

  • - Move capable() from sched.h to capability.h;

    - Use where capable() is used
    (in include/, block/, ipc/, kernel/, a few drivers/,
    mm/, security/, & sound/;
    many more drivers/ to go)

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy.Dunlap
     

10 Jan, 2006

1 commit


09 Jan, 2006

6 commits


07 Jan, 2006

2 commits


06 Jan, 2006

6 commits

  • 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.

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

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

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

    Tejun Heo
     
  • 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.

    Signed-off-by: tejun heo
    Signed-Off-By: Jens Axboe

    Tejun Heo
     
  • the patch below marks various read-only variables in block/* as const,
    so that gcc can optimize the use of them; eg gcc will replace the use by
    the value directly now and will even remove the memory usage of these.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Jens Axboe

    Arjan van de Ven
     
  • Originally from: Nick Piggin

    Move current_io_context out of the get_request fastpth. Also try to
    streamline a few other things in this area.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Unlike other ioscheds, as-iosched handles alias by chaing them using
    rq->queuelist. As aliased requests are very rare in the first place,
    this complicates merge/dispatch handling without meaningful
    performance improvement. This patch updates as-iosched to dump
    aliased requests into dispatch queue as other ioscheds do.

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

    Tejun Heo
     

05 Jan, 2006

3 commits


20 Dec, 2005

1 commit


16 Dec, 2005

1 commit

  • - export __blk_put_request and blk_execute_rq_nowait
    needed for async REQ_BLOCK_PC requests
    - seperate max_hw_sectors and max_sectors for block/scsi_ioctl.c and
    SG_IO bio.c helpers per Jens's last comments. Since block/scsi_ioctl.c SG_IO was
    already testing against max_sectors and SCSI-ml was setting max_sectors and
    max_hw_sectors to the same value this does not change any scsi SG_IO behavior. It only
    prepares ll_rw_blk.c, scsi_ioctl.c and bio.c for when SCSI-ml begins to set
    a valid max_hw_sectors for all LLDs. Today if a LLD does not set it
    SCSI-ml sets it to a safe default and some LLDs set it to a artificial low
    value to overcome memory and feedback issues.

    Note: Since we now cap max_sectors to BLK_DEF_MAX_SECTORS, which is 1024,
    drivers that used to call blk_queue_max_sectors with a large value of
    max_sectors will now see the fs requests capped to BLK_DEF_MAX_SECTORS.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

15 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

5 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