lkml.org 
[lkml]   [2012]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 20/26] aio: Give shared kioctx fields their own cachelines
    Date
    Signed-off-by: Kent Overstreet <koverstreet@google.com>
    ---
    fs/aio.c | 26 ++++++++++++++++----------
    1 file changed, 16 insertions(+), 10 deletions(-)

    diff --git a/fs/aio.c b/fs/aio.c
    index cebd8f2..70a34f6 100644
    --- a/fs/aio.c
    +++ b/fs/aio.c
    @@ -67,13 +67,6 @@ struct kioctx {
    unsigned long user_id;
    struct hlist_node list;

    - wait_queue_head_t wait;
    -
    - spinlock_t ctx_lock;
    -
    - atomic_t reqs_active;
    - struct list_head active_reqs; /* used for cancellation */
    -
    unsigned nr;

    /* sys_io_setup currently limits this to an unsigned int */
    @@ -85,6 +78,18 @@ struct kioctx {
    struct page **ring_pages;
    long nr_pages;

    + struct rcu_head rcu_head;
    + struct work_struct rcu_work;
    +
    + struct {
    + atomic_t reqs_active;
    + } ____cacheline_aligned;
    +
    + struct {
    + spinlock_t ctx_lock;
    + struct list_head active_reqs; /* used for cancellation */
    + } ____cacheline_aligned;
    +
    struct {
    struct mutex ring_lock;
    } ____cacheline_aligned;
    @@ -94,10 +99,11 @@ struct kioctx {
    spinlock_t completion_lock;
    } ____cacheline_aligned;

    - struct page *internal_pages[AIO_RING_PAGES];
    + struct {
    + wait_queue_head_t wait;
    + } ____cacheline_aligned;

    - struct rcu_head rcu_head;
    - struct work_struct rcu_work;
    + struct page *internal_pages[AIO_RING_PAGES];
    };

    /*------ sysctl variables----*/
    --
    1.7.12


    \
     
     \ /
      Last update: 2012-12-03 23:01    [W:4.079 / U:0.492 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site