lkml.org 
[lkml]   [2009]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH 4/9] blkio-cgroup-v9: Refactoring io-context initialization
    From
    This patch refactors io_context initialization.

    Signed-off-by: Hirokazu Takahashi <taka@valinux.co.jp>
    Signed-off-by: Ryo Tsuruta <ryov@valinux.co.jp>

    ---
    block/blk-ioc.c | 30 +++++++++++++++++-------------
    include/linux/iocontext.h | 1 +
    2 files changed, 18 insertions(+), 13 deletions(-)

    Index: linux-2.6.31-rc3/block/blk-ioc.c
    ===================================================================
    --- linux-2.6.31-rc3.orig/block/blk-ioc.c
    +++ linux-2.6.31-rc3/block/blk-ioc.c
    @@ -84,24 +84,28 @@ void exit_io_context(void)
    }
    }

    +void init_io_context(struct io_context *ioc)
    +{
    + atomic_set(&ioc->refcount, 1);
    + atomic_set(&ioc->nr_tasks, 1);
    + spin_lock_init(&ioc->lock);
    + ioc->ioprio_changed = 0;
    + ioc->ioprio = 0;
    + ioc->last_waited = jiffies; /* doesn't matter... */
    + ioc->nr_batch_requests = 0; /* because this is 0 */
    + ioc->aic = NULL;
    + INIT_RADIX_TREE(&ioc->radix_root, GFP_ATOMIC | __GFP_HIGH);
    + INIT_HLIST_HEAD(&ioc->cic_list);
    + ioc->ioc_data = NULL;
    +}
    +
    struct io_context *alloc_io_context(gfp_t gfp_flags, int node)
    {
    struct io_context *ret;

    ret = kmem_cache_alloc_node(iocontext_cachep, gfp_flags, node);
    - if (ret) {
    - atomic_long_set(&ret->refcount, 1);
    - atomic_set(&ret->nr_tasks, 1);
    - spin_lock_init(&ret->lock);
    - ret->ioprio_changed = 0;
    - ret->ioprio = 0;
    - ret->last_waited = jiffies; /* doesn't matter... */
    - ret->nr_batch_requests = 0; /* because this is 0 */
    - ret->aic = NULL;
    - INIT_RADIX_TREE(&ret->radix_root, GFP_ATOMIC | __GFP_HIGH);
    - INIT_HLIST_HEAD(&ret->cic_list);
    - ret->ioc_data = NULL;
    - }
    + if (ret)
    + init_io_context(ret);

    return ret;
    }
    Index: linux-2.6.31-rc3/include/linux/iocontext.h
    ===================================================================
    --- linux-2.6.31-rc3.orig/include/linux/iocontext.h
    +++ linux-2.6.31-rc3/include/linux/iocontext.h
    @@ -104,6 +104,7 @@ int put_io_context(struct io_context *io
    void exit_io_context(void);
    struct io_context *get_io_context(gfp_t gfp_flags, int node);
    struct io_context *alloc_io_context(gfp_t gfp_flags, int node);
    +void init_io_context(struct io_context *ioc);
    void copy_io_context(struct io_context **pdst, struct io_context **psrc);
    #else
    static inline void exit_io_context(void)

    \
     
     \ /
      Last update: 2009-07-21 16:15    [W:0.025 / U:3.488 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site