From: John Stultz <john.stultz@linaro.org>
To: Jan Kara <jack@suse.cz>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Android Kernel Team <kernel-team@android.com>,
Robert Love <rlove@google.com>, Mel Gorman <mel@csn.ul.ie>,
Hugh Dickins <hughd@google.com>,
Dave Hansen <dave@linux.vnet.ibm.com>,
Rik van Riel <riel@redhat.com>,
Dmitry Adamushko <dmitry.adamushko@gmail.com>,
Dave Chinner <david@fromorbit.com>, Neil Brown <neilb@suse.de>,
Andrea Righi <andrea@betterlinux.com>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
Taras Glek <tgek@mozilla.com>, Mike Hommey <mh@glandium.org>
Subject: Re: [PATCH 2/4] [RFC] Range tree implementation
Date: Thu, 31 May 2012 14:04:23 -0700 [thread overview]
Message-ID: <4FC7DCD7.6020800@linaro.org> (raw)
In-Reply-To: <20120531204806.GB16338@quack.suse.cz>
On 05/31/2012 01:48 PM, Jan Kara wrote:
> On Fri 25-05-12 12:17:34, John Stultz wrote:
>> I suspect range-tree isn't a totally accurate name, but I
>> couldn't quite make out the difference between range trees
>> and interval trees, so I just picked one to call it. Do
>> let me know if you have a better name.
> Well, interval tree is a data structure for tracking a set of
> possibly overlapping intervals. Range tree is a data structure tracking
> points allowing for fast queries on a set of points contained in a given
> range (gets useful and interesting when dimension> 1). Your data structure
> is neither so it would be good to have a different name. OTOH there are so
> many data structures that it's hard to find a reasonable unused name ;)
Although I'm not sure your interval tree description doesn't match what
I'm trying to provide. Could you clarify why that doesn't match?
>> +/**
>> + * range_tree_next_in_range - Return the next range in a range_tree still
>> + * contained within a specified range.
> 'within' isn't really correct, right? It should rather be 'intersecting'.
That is more clear, thanks for the suggestion!
>
>> + * @root: range_tree root
>> + * @start: range start
>> + * @end: range end
>> + *
>> + */
>> +struct range_tree_node *range_tree_next_in_range(struct range_tree_node *node,
>> + u64 start, u64 end)
>> +{
>> + struct rb_node *next;
>> + struct range_tree_node *candidate;
>> + if (!node)
>> + return NULL;
>> + next = rb_next(&node->rb);
>> + if (!next)
>> + return NULL;
>> +
>> + candidate = container_of(next, struct range_tree_node, rb);
>> +
>> + if ((candidate->start> end) || (candidate->end< start))
>> + return NULL;
>> +
>> + return candidate;
>> +}
>> +
>> +/**
>> + * range_tree_add - Add a node to a range tree
>> + * @root: range tree to be added to
>> + * @node: range_tree_node to be added
>> + *
>> + * Adds a node to the range tree.
> I think you should document here that the added range must not intersect
> with any other range in the tree.
So for my usage in the volatile range code, I don't want intersecting or
overlapping ranges added, but I didn't feel it was necessary to add this
restriction to my rangetree code as well, since someone might want to
store overlapping ranges.
thanks for the review!
-john
next prev parent reply other threads:[~2012-05-31 21:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-25 19:17 [PATCH 0/4] [RFC] Fallocate Volatile Ranges John Stultz
2012-05-25 19:17 ` [PATCH 1/4] tmpfs: support fallocate FALLOC_FL_PUNCH_HOLE John Stultz
2012-05-25 19:17 ` [PATCH 2/4] [RFC] Range tree implementation John Stultz
2012-05-31 20:48 ` Jan Kara
2012-05-31 21:04 ` John Stultz [this message]
2012-05-31 22:35 ` Jan Kara
2012-05-31 23:12 ` John Stultz
2012-05-25 19:17 ` [PATCH 3/4] [RFC] Add volatile range management code John Stultz
2012-05-25 19:17 ` [PATCH 4/4] [RFC] tmpfs: Add FALLOC_FL_MARK_VOLATILE/UNMARK_VOLATILE handlers John Stultz
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=4FC7DCD7.6020800@linaro.org \
--to=john.stultz@linaro.org \
--cc=akpm@linux-foundation.org \
--cc=andrea@betterlinux.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=dave@linux.vnet.ibm.com \
--cc=david@fromorbit.com \
--cc=dmitry.adamushko@gmail.com \
--cc=hughd@google.com \
--cc=jack@suse.cz \
--cc=kernel-team@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mel@csn.ul.ie \
--cc=mh@glandium.org \
--cc=neilb@suse.de \
--cc=riel@redhat.com \
--cc=rlove@google.com \
--cc=tgek@mozilla.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.