06 Feb, 2006

3 commits

  • q->ordcolor must not be flipped on SOFTBARRIER.

    Signed-off-by: Tejun Heo
    Acked-by: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • Previously, if a fs request which was being drained failed and got
    requeued, blk_do_ordered() didn't allow it to be reissued, which causes
    queue stall. This patch makes blk_do_ordered() use the sequence of each
    request to determine whether a request can be issued or not. This fixes
    the bug and simplifies code.

    Signed-off-by: Tejun Heo
    Acked-by: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • percpu_data blindly allocates bootmem memory to store NR_CPUS instances of
    cpudata, instead of allocating memory only for possible cpus.

    As a preparation for changing that, we need to convert various 0 -> NR_CPUS
    loops to use for_each_cpu().

    (The above only applies to users of asm-generic/percpu.h. powerpc has gone it
    alone and is presently only allocating memory for present CPUs, so it's
    currently corrupting memory).

    Signed-off-by: Eric Dumazet
    Cc: "David S. Miller"
    Cc: James Bottomley
    Acked-by: Ingo Molnar
    Cc: Jens Axboe
    Cc: Anton Blanchard
    Acked-by: William Irwin
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Dumazet
     

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

2 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