From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>,
Matthew Wilcox <mawilcox@microsoft.com>,
Konstantin Khlebnikov <koct9i@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH RFC 1/4] lib/radix: add universal radix_tree_fill_range
Date: Tue, 30 Aug 2016 16:53:16 -0600 [thread overview]
Message-ID: <20160830225316.GA10789@linux.intel.com> (raw)
In-Reply-To: <CAPcyv4iS8z3ZTWJO7N+dW+WeHX8HsB+siw55CJMfVNN8rpPSYQ@mail.gmail.com>
On Tue, Aug 30, 2016 at 03:21:24PM -0700, Dan Williams wrote:
> On Tue, Aug 30, 2016 at 3:03 PM, Ross Zwisler
> <ross.zwisler@linux.intel.com> wrote:
> > On Tue, Aug 30, 2016 at 02:56:17PM -0700, Dan Williams wrote:
> >> On Mon, Aug 29, 2016 at 11:52 AM, Matthew Wilcox <mawilcox@microsoft.com> wrote:
> >> > It may be protected by the mapping lock in the current code, but I would it expect it to become an RCU lookup + lock eventually. No mapping lock, just like the page cache.
> >> >
> >> > Even if we can work around it, why do we want to? What's the compelling reason to change from the current radix tree representation of order-N entries to an arbitrary range? There are no in-kernel users right now; is there a performance reason to change? We don't usually change an API in anticipation of future users appearing, particularly when the API makes it harder for the existing users to use it.
> >>
> >> I'd use a fill range api for the radix backing get_dev_pagemap() and
> >> potentially another use in device-dax. It centralizes the common
> >> routine of breaking down a range into its constituent power-of-2
> >> ranges.
> >
> > Does your usage not work with the current sibling & canonical entry model?
>
> It does, but I find myself writing code to walk a range and determine
> the order of each entry as I insert them. I can see other users
> needing the same sort of insert helper and the aspect I like of
> Konstantin's proposed change is that the functionality is part of the
> core implementation rather than left to be duplicated in each user.
Perhaps the answer is to have them both? Matthew's multi-order radix
functionality with siblings for those of us that really *want* a single
canonical entry that we can look up, use tags on, etc. And Konstantin's
method where we insert a bunch of duplicate entries that don't have sibling
pointers? Is there a reason why they can't coexist?
next prev parent reply other threads:[~2016-08-30 22:53 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-27 14:14 [PATCH RFC 1/4] lib/radix: add universal radix_tree_fill_range Konstantin Khlebnikov
2016-08-27 14:14 ` Konstantin Khlebnikov
2016-08-27 14:16 ` [PATCH RFC 2/4] lib/radix-tree: remove sibling entries Konstantin Khlebnikov
2016-08-27 14:16 ` Konstantin Khlebnikov
2016-08-27 14:16 ` [PATCH RFC 3/4] testing/radix-tree: replace multi-order with range operations Konstantin Khlebnikov
2016-08-27 14:16 ` Konstantin Khlebnikov
2016-08-27 14:16 ` [PATCH RFC 4/4] testing/radix-tree: benchmark for iterator Konstantin Khlebnikov
2016-08-27 14:16 ` Konstantin Khlebnikov
[not found] ` <20160827180927.GA22919@linux.intel.com>
2016-08-29 15:21 ` [PATCH RFC 1/4] lib/radix: add universal radix_tree_fill_range Matthew Wilcox
2016-08-29 16:14 ` Konstantin Khlebnikov
2016-08-29 18:08 ` Matthew Wilcox
2016-08-29 18:15 ` Konstantin Khlebnikov
2016-08-29 18:52 ` Matthew Wilcox
2016-08-30 21:56 ` Dan Williams
2016-08-30 22:03 ` Ross Zwisler
2016-08-30 22:21 ` Dan Williams
2016-08-30 22:53 ` Ross Zwisler [this message]
2016-09-01 6:12 ` Konstantin Khlebnikov
2016-09-02 17:59 ` Matthew Wilcox
2016-09-03 4:50 ` Konstantin Khlebnikov
2016-08-31 14:57 ` Matthew Wilcox
2016-08-31 16:36 ` Dan Williams
2016-09-01 6:16 ` Konstantin Khlebnikov
2016-08-30 22:00 ` Ross Zwisler
2016-08-30 22:39 ` Ross Zwisler
2016-08-30 22:39 ` Ross Zwisler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160830225316.GA10789@linux.intel.com \
--to=ross.zwisler@linux.intel.com \
--cc=dan.j.williams@intel.com \
--cc=koct9i@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mawilcox@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.