lkml.org 
[lkml]   [2011]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[slubllv6 01/17] slub: Push irq disable into allocate_slab()
    Do the irq handling in allocate_slab() instead of __slab_alloc().

    __slab_alloc() is already cluttered and allocate_slab() is already
    fiddling around with gfp flags.

    Signed-off-by: Christoph Lameter <cl@linux.com>

    ---
    mm/slub.c | 21 +++++++++++----------
    1 file changed, 11 insertions(+), 10 deletions(-)

    Index: linux-2.6/mm/slub.c
    ===================================================================
    --- linux-2.6.orig/mm/slub.c 2011-05-19 13:59:24.271151647 -0500
    +++ linux-2.6/mm/slub.c 2011-05-19 13:59:24.981151647 -0500
    @@ -1187,6 +1187,11 @@ static struct page *allocate_slab(struct
    struct kmem_cache_order_objects oo = s->oo;
    gfp_t alloc_gfp;

    + flags &= gfp_allowed_mask;
    +
    + if (flags & __GFP_WAIT)
    + local_irq_enable();
    +
    flags |= s->allocflags;

    /*
    @@ -1203,12 +1208,15 @@ static struct page *allocate_slab(struct
    * Try a lower order alloc if possible
    */
    page = alloc_slab_page(flags, node, oo);
    - if (!page)
    - return NULL;
    -
    stat(s, ORDER_FALLBACK);
    }

    + if (flags & __GFP_WAIT)
    + local_irq_disable();
    +
    + if (!page)
    + return NULL;
    +
    if (kmemcheck_enabled
    && !(s->flags & (SLAB_NOTRACK | DEBUG_DEFAULT_FLAGS))) {
    int pages = 1 << oo_order(oo);
    @@ -1849,15 +1857,8 @@ new_slab:
    goto load_freelist;
    }

    - gfpflags &= gfp_allowed_mask;
    - if (gfpflags & __GFP_WAIT)
    - local_irq_enable();
    -
    page = new_slab(s, gfpflags, node);

    - if (gfpflags & __GFP_WAIT)
    - local_irq_disable();
    -
    if (page) {
    c = __this_cpu_ptr(s->cpu_slab);
    stat(s, ALLOC_SLAB);


    \
     
     \ /
      Last update: 2011-05-26 20:19    [W:5.300 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site