From: Steven Whitehouse <swhiteho@redhat.com>
To: zwu.kernel@gmail.com
Cc: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org,
linuxram@linux.vnet.ibm.com, viro@zeniv.linux.org.uk,
david@fromorbit.com, tytso@mit.edu, cmm@us.ibm.com,
wuzhy@linux.vnet.ibm.com, wenqing.lz@taobao.com
Subject: Re: [RFC v4+ hot_track 03/19] vfs: add I/O frequency update function
Date: Mon, 05 Nov 2012 11:07:05 +0000 [thread overview]
Message-ID: <1352113625.2705.10.camel@menhir> (raw)
In-Reply-To: <1351485061-12297-4-git-send-email-zwu.kernel@gmail.com>
Hi,
On Mon, 2012-10-29 at 12:30 +0800, zwu.kernel@gmail.com wrote:
> From: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
>
> Add some util helpers to update access frequencies
> for one file or its range.
>
> Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
> ---
> fs/hot_tracking.c | 179 ++++++++++++++++++++++++++++++++++++++++++
> fs/hot_tracking.h | 7 ++
> include/linux/hot_tracking.h | 2 +
> 3 files changed, 188 insertions(+), 0 deletions(-)
>
> diff --git a/fs/hot_tracking.c b/fs/hot_tracking.c
> index 68591f0..0a7d9a3 100644
> --- a/fs/hot_tracking.c
> +++ b/fs/hot_tracking.c
> @@ -172,6 +172,137 @@ static void hot_inode_tree_exit(struct hot_info *root)
> }
> }
>
> +struct hot_inode_item
> +*hot_inode_item_find(struct hot_info *root, u64 ino)
> +{
> + struct hot_inode_item *he;
> + int ret;
> +
> +again:
> + spin_lock(&root->lock);
> + he = radix_tree_lookup(&root->hot_inode_tree, ino);
> + if (he) {
> + kref_get(&he->hot_inode.refs);
> + spin_unlock(&root->lock);
> + return he;
> + }
> + spin_unlock(&root->lock);
> +
> + he = kmem_cache_zalloc(hot_inode_item_cachep,
> + GFP_KERNEL | GFP_NOFS);
This doesn't look quite right... which of these two did you mean? I
assume probably just GFP_NOFS
> + if (!he)
> + return ERR_PTR(-ENOMEM);
> +
> + hot_inode_item_init(he, ino, &root->hot_inode_tree);
> +
> + ret = radix_tree_preload(GFP_NOFS & ~__GFP_HIGHMEM);
> + if (ret) {
> + kmem_cache_free(hot_inode_item_cachep, he);
> + return ERR_PTR(ret);
> + }
> +
> + spin_lock(&root->lock);
> + ret = radix_tree_insert(&root->hot_inode_tree, ino, he);
> + if (ret == -EEXIST) {
> + kmem_cache_free(hot_inode_item_cachep, he);
> + spin_unlock(&root->lock);
> + radix_tree_preload_end();
> + goto again;
> + }
> + spin_unlock(&root->lock);
> + radix_tree_preload_end();
> +
> + kref_get(&he->hot_inode.refs);
> + return he;
> +}
> +EXPORT_SYMBOL_GPL(hot_inode_item_find);
> +
> +static struct hot_range_item
> +*hot_range_item_find(struct hot_inode_item *he,
> + u32 start)
> +{
> + struct hot_range_item *hr;
> + int ret;
> +
> +again:
> + spin_lock(&he->lock);
> + hr = radix_tree_lookup(&he->hot_range_tree, start);
> + if (hr) {
> + kref_get(&hr->hot_range.refs);
> + spin_unlock(&he->lock);
> + return hr;
> + }
> + spin_unlock(&he->lock);
> +
> + hr = kmem_cache_zalloc(hot_range_item_cachep,
> + GFP_KERNEL | GFP_NOFS);
Likewise, here too.
Steve.
next prev parent reply other threads:[~2012-11-05 11:07 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-29 4:30 [RFC v4+ hot_track 00/19] vfs: hot data tracking zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 01/19] vfs: introduce private radix tree structures zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 02/19] vfs: initialize and free data structures zwu.kernel
2012-11-06 22:24 ` David Sterba
2012-11-07 6:55 ` Zhi Yong Wu
2012-11-16 6:16 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 03/19] vfs: add I/O frequency update function zwu.kernel
2012-11-05 11:07 ` Steven Whitehouse [this message]
2012-11-05 11:47 ` Zhi Yong Wu
2012-11-06 22:37 ` David Sterba
2012-11-07 7:03 ` Zhi Yong Wu
2012-11-06 22:45 ` Darrick J. Wong
2012-11-07 8:27 ` Zhi Yong Wu
2012-11-07 18:49 ` Darrick J. Wong
2012-11-08 2:52 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 04/19] vfs: add two map arrays zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 05/19] vfs: add hooks to enable hot tracking zwu.kernel
2012-11-06 22:51 ` David Sterba
2012-11-07 7:06 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 06/19] vfs: add temp calculation function zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 07/19] vfs: add map info update function zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 08/19] vfs: add aging function zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 09/19] vfs: add one work queue zwu.kernel
2012-11-05 11:21 ` Steven Whitehouse
2012-11-05 11:55 ` Zhi Yong Wu
2012-11-05 12:07 ` Steven Whitehouse
2012-11-05 12:20 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 10/19] vfs: introduce hot func register framework zwu.kernel
2012-11-06 23:14 ` David Sterba
2012-11-07 7:18 ` Zhi Yong Wu
2012-11-06 23:30 ` Darrick J. Wong
2012-11-07 8:34 ` Zhi Yong Wu
2012-11-07 18:58 ` Darrick J. Wong
2012-11-08 2:59 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 11/19] vfs: register one shrinker zwu.kernel
2012-10-29 4:30 ` [RFC v4+ hot_track 12/19] vfs: add one ioctl interface zwu.kernel
2012-11-06 23:30 ` David Sterba
2012-11-07 7:36 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 13/19] debugfs: introduce one function zwu.kernel
2012-10-29 18:11 ` Greg KH
2012-10-29 22:25 ` Zhi Yong Wu
2012-10-29 22:34 ` Greg KH
2012-10-29 22:45 ` Zhi Yong Wu
2012-10-29 22:54 ` Greg KH
2012-10-29 22:58 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 14/19] vfs: add debugfs support zwu.kernel
2012-11-06 23:45 ` David Sterba
2012-11-07 7:49 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 15/19] sysfs: add two hot_track proc files zwu.kernel
2012-10-29 18:10 ` Greg KH
2012-10-29 22:26 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 16/19] btrfs: add hot tracking support zwu.kernel
2012-11-07 0:00 ` David Sterba
2012-11-07 8:03 ` Zhi Yong Wu
2012-10-29 4:30 ` [RFC v4+ hot_track 17/19] xfs: " zwu.kernel
2012-10-29 4:31 ` [RFC v4+ hot_track 18/19] ext4: " zwu.kernel
2012-10-29 4:31 ` [RFC v4+ hot_track 19/19] vfs: add documentation zwu.kernel
2012-10-29 10:30 ` [RFC v4+ hot_track 00/19] vfs: hot data tracking Andi Kleen
2012-10-29 12:31 ` Zhi Yong Wu
2012-11-07 8:51 ` Zhi Yong Wu
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=1352113625.2705.10.camel@menhir \
--to=swhiteho@redhat.com \
--cc=cmm@us.ibm.com \
--cc=david@fromorbit.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxram@linux.vnet.ibm.com \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
--cc=wenqing.lz@taobao.com \
--cc=wuzhy@linux.vnet.ibm.com \
--cc=zwu.kernel@gmail.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.