lkml.org 
[lkml]   [2018]   [Mar]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v9 34/61] mm: Convert truncate to XArray
    Date
    From: Matthew Wilcox <mawilcox@microsoft.com>

    This is essentially xa_cmpxchg() with the locking handled above us,
    and it doesn't have to handle replacing a NULL entry.

    Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
    ---
    mm/truncate.c | 15 ++++++---------
    1 file changed, 6 insertions(+), 9 deletions(-)

    diff --git a/mm/truncate.c b/mm/truncate.c
    index ed778555c9f3..45d68e90b703 100644
    --- a/mm/truncate.c
    +++ b/mm/truncate.c
    @@ -33,15 +33,12 @@
    static inline void __clear_shadow_entry(struct address_space *mapping,
    pgoff_t index, void *entry)
    {
    - struct radix_tree_node *node;
    - void **slot;
    + XA_STATE(xas, &mapping->i_pages, index);

    - if (!__radix_tree_lookup(&mapping->i_pages, index, &node, &slot))
    + xas_set_update(&xas, workingset_update_node);
    + if (xas_load(&xas) != entry)
    return;
    - if (*slot != entry)
    - return;
    - __radix_tree_replace(&mapping->i_pages, node, slot, NULL,
    - workingset_update_node);
    + xas_store(&xas, NULL);
    mapping->nrexceptional--;
    }

    @@ -738,10 +735,10 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
    index++;
    }
    /*
    - * For DAX we invalidate page tables after invalidating radix tree. We
    + * For DAX we invalidate page tables after invalidating page cache. We
    * could invalidate page tables while invalidating each entry however
    * that would be expensive. And doing range unmapping before doesn't
    - * work as we have no cheap way to find whether radix tree entry didn't
    + * work as we have no cheap way to find whether page cache entry didn't
    * get remapped later.
    */
    if (dax_mapping(mapping)) {
    --
    2.16.1
    \
     
     \ /
      Last update: 2018-03-13 14:43    [W:3.524 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site