13 Dec, 2006

1 commit


05 Dec, 2006

1 commit


01 Dec, 2006

1 commit


22 Nov, 2006

1 commit

  • Pass the work_struct pointer to the work function rather than context data.
    The work function can use container_of() to work out the data.

    For the cases where the container of the work_struct may go away the moment the
    pending bit is cleared, it is made possible to defer the release of the
    structure by deferring the clearing of the pending bit.

    To make this work, an extra flag is introduced into the management side of the
    work_struct. This governs auto-release of the structure upon execution.

    Ordinarily, the work queue executor would release the work_struct for further
    scheduling or deallocation by clearing the pending bit prior to jumping to the
    work function. This means that, unless the driver makes some guarantee itself
    that the work_struct won't go away, the work function may not access anything
    else in the work_struct or its container lest they be deallocated.. This is a
    problem if the auxiliary data is taken away (as done by the last patch).

    However, if the pending bit is *not* cleared before jumping to the work
    function, then the work function *may* access the work_struct and its container
    with no problems. But then the work function must itself release the
    work_struct by calling work_release().

    In most cases, automatic release is fine, so this is the default. Special
    initiators exist for the non-auto-release case (ending in _NAR).

    Signed-Off-By: David Howells

    David Howells
     

01 Oct, 2006

13 commits


01 Jul, 2006

1 commit


27 Jun, 2006

1 commit

  • acquired (aquired)
    contiguous (contigious)
    successful (succesful, succesfull)
    surprise (suprise)
    whether (weather)
    some other misspellings

    Signed-off-by: Andreas Mohr
    Signed-off-by: Adrian Bunk

    Andreas Mohr
     

23 Jun, 2006

3 commits

  • They all duplicate macros to check for empty root and/or node, and
    clearing a node. So put those in rbtree.h.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • A process flag to indicate whether we are doing sync io is incredibly
    ugly. It also causes performance problems when one does a lot of async
    io and then proceeds to sync it. Part of the io will go out as async,
    and the other part as sync. This causes a disconnect between the
    previously submitted io and the synced io. For io schedulers such as CFQ,
    this will cause us lost merges and suboptimal behaviour in scheduling.

    Remove PF_SYNCWRITE completely from the fsync/msync paths, and let
    the O_DIRECT path just directly indicate that the writes are sync
    by using WRITE_SYNC instead.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Use hlist instead of list_head for request hashtable in deadline-iosched
    and as-iosched. It also can remove the flag to know hashed or unhashed.

    Signed-off-by: Akinobu Mita
    Signed-off-by: Jens Axboe

    block/as-iosched.c | 45 +++++++++++++++++++--------------------------
    block/deadline-iosched.c | 39 ++++++++++++++++-----------------------
    2 files changed, 35 insertions(+), 49 deletions(-)

    Akinobu Mita
     

21 Jun, 2006

1 commit

  • * git://git.infradead.org/~dwmw2/rbtree-2.6:
    [RBTREE] Switch rb_colour() et al to en_US spelling of 'color' for consistency
    Update UML kernel/physmem.c to use rb_parent() accessor macro
    [RBTREE] Update hrtimers to use rb_parent() accessor macro.
    [RBTREE] Add explicit alignment to sizeof(long) for struct rb_node.
    [RBTREE] Merge colour and parent fields of struct rb_node.
    [RBTREE] Remove dead code in rb_erase()
    [RBTREE] Update JFFS2 to use rb_parent() accessor macro.
    [RBTREE] Update eventpoll.c to use rb_parent() accessor macro.
    [RBTREE] Update key.c to use rb_parent() accessor macro.
    [RBTREE] Update ext3 to use rb_parent() accessor macro.
    [RBTREE] Change rbtree off-tree marking in I/O schedulers.
    [RBTREE] Add accessor macros for colour and parent fields of rb_node

    Linus Torvalds
     

09 Jun, 2006

1 commit

  • There's a race between shutting down one io scheduler and firing up the
    next, in which a new io could enter and cause the io scheduler to be
    invoked with bad or NULL data.

    To fix this, we need to maintain the queue lock for a bit longer.
    Unfortunately we cannot do that, since the elevator init requires to be
    run without the lock held. This isn't easily fixable, without also
    changing the mempool API. So split the initialization into two parts,
    and alloc-init operation and an attach operation. Then we can
    preallocate the io scheduler and related structures, and run the attach
    inside the lock after we detach the old one.

    This patch has survived 30 minutes of 1 second io scheduler switching
    with a very busy io load.

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

    Jens Axboe
     

21 Apr, 2006

1 commit


18 Apr, 2006

1 commit

  • On rmmod path, cfq/as waits to make sure all io-contexts was
    freed. However, it's using complete(), not wait_for_completion().

    I think barrier() is not enough in here. To avoid the following case,
    this patch replaces barrier() with smb_wmb().

    cpu0 visibility cpu1
    [ioc_gnone=NULL,ioc_count=1]

    ioc_gnone = &all_gone NULL,ioc_count=1
    atomic_read(&ioc_count) NULL,ioc_count=1
    wait_for_completion() NULL,ioc_count=0 atomic_sub_and_test()
    NULL,ioc_count=0 if ( && ioc_gone)
    [ioc_gone==NULL,
    so doesn't call complete()]
    &all_gone,ioc_count=0

    Signed-off-by: OGAWA Hirofumi
    Signed-off-by: Jens Axboe

    OGAWA Hirofumi
     

19 Mar, 2006

4 commits


06 Jan, 2006

1 commit

  • 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
     

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


08 Nov, 2005

1 commit


04 Nov, 2005

1 commit