[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171226171542.v25xieedd46y5peu@node.shutemov.name>
Date: Tue, 26 Dec 2017 20:15:42 +0300
From: "Kirill A. Shutemov" <kirill@...temov.name>
To: Matthew Wilcox <willy@...radead.org>
Cc: linux-kernel@...r.kernel.org,
Matthew Wilcox <mawilcox@...rosoft.com>,
Ross Zwisler <ross.zwisler@...ux.intel.com>,
David Howells <dhowells@...hat.com>,
Shaohua Li <shli@...nel.org>, Jens Axboe <axboe@...nel.dk>,
Rehas Sachdeva <aquannie@...il.com>,
Marc Zyngier <marc.zyngier@....com>, linux-mm@...ck.org,
linux-fsdevel@...r.kernel.org,
linux-f2fs-devel@...ts.sourceforge.net,
linux-nilfs@...r.kernel.org, linux-btrfs@...r.kernel.org,
linux-xfs@...r.kernel.org, linux-usb@...r.kernel.org,
linux-raid@...r.kernel.org
Subject: Re: [PATCH v5 05/78] xarray: Replace exceptional entries
On Fri, Dec 15, 2017 at 02:03:37PM -0800, Matthew Wilcox wrote:
> From: Matthew Wilcox <mawilcox@...rosoft.com>
>
> Introduce xarray value entries to replace the radix tree exceptional
> entry code. This is a slight change in encoding to allow the use of an
> extra bit (we can now store BITS_PER_LONG - 1 bits in a value entry).
> It is also a change in emphasis; exceptional entries are intimidating
> and different. As the comment explains, you can choose to store values
> or pointers in the xarray and they are both first-class citizens.
>
> Signed-off-by: Matthew Wilcox <mawilcox@...rosoft.com>
> ---
> arch/powerpc/include/asm/book3s/64/pgtable.h | 4 +-
> arch/powerpc/include/asm/nohash/64/pgtable.h | 4 +-
> drivers/gpu/drm/i915/i915_gem.c | 17 ++--
> drivers/staging/lustre/lustre/mdc/mdc_request.c | 2 +-
> fs/btrfs/compression.c | 2 +-
> fs/btrfs/inode.c | 4 +-
> fs/dax.c | 115 ++++++++++++------------
> fs/proc/task_mmu.c | 2 +-
> include/linux/fs.h | 48 ++++++----
> include/linux/radix-tree.h | 36 ++------
> include/linux/swapops.h | 19 ++--
> include/linux/xarray.h | 40 +++++++++
> lib/idr.c | 63 ++++++-------
> lib/radix-tree.c | 21 ++---
> mm/filemap.c | 10 +--
> mm/khugepaged.c | 2 +-
> mm/madvise.c | 2 +-
> mm/memcontrol.c | 2 +-
> mm/mincore.c | 2 +-
> mm/readahead.c | 2 +-
> mm/shmem.c | 10 +--
> mm/swap.c | 2 +-
> mm/truncate.c | 12 +--
> mm/workingset.c | 12 ++-
> tools/testing/radix-tree/idr-test.c | 6 +-
> tools/testing/radix-tree/linux/radix-tree.h | 1 +
> tools/testing/radix-tree/multiorder.c | 47 +++++-----
> tools/testing/radix-tree/test.c | 2 +-
> 28 files changed, 249 insertions(+), 240 deletions(-)
Everything looks fine to me after quick scan, but hat's a lot of changes for
one patch...
> @@ -565,7 +565,7 @@ unsigned long invalidate_mapping_pages(struct address_space *mapping,
> if (index > end)
> break;
>
> - if (radix_tree_exceptional_entry(page)) {
> + if (xa_is_value(page)) {
> invalidate_exceptional_entry(mapping, index,
> page);
> continue;
> @@ -696,7 +696,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
> if (index > end)
> break;
>
> - if (radix_tree_exceptional_entry(page)) {
> + if (xa_is_value(page)) {
> if (!invalidate_exceptional_entry2(mapping,
> index, page))
> ret = -EBUSY;
invalidate_exceptional_entry? Are we going to leave the terminology here as is?
--
Kirill A. Shutemov
Powered by blists - more mailing lists