All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: zwu.kernel@gmail.com
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org,
	linuxram@linux.vnet.ibm.com, viro@zeniv.linux.org.uk,
	cmm@us.ibm.com, tytso@mit.edu, marco.stornelli@gmail.com,
	stroetmann@ontolinux.com, diegocg@gmail.com, chris@csamuel.org,
	Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Subject: Re: [RFC v2 04/10] vfs: add init and exit support
Date: Thu, 27 Sep 2012 12:27:51 +1000	[thread overview]
Message-ID: <20120927022751.GL15236@dastard> (raw)
In-Reply-To: <1348404995-14372-5-git-send-email-zwu.kernel@gmail.com>

On Sun, Sep 23, 2012 at 08:56:29PM +0800, zwu.kernel@gmail.com wrote:
> From: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
> 
>   Add initialization function to create some
> key data structures when hot tracking is enabled;
> Clean up them when hot tracking is disabled
> 
> Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
> ---
>  fs/hot_tracking.c |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  fs/hot_tracking.h |    2 +
>  fs/namespace.c    |    4 +++
>  fs/super.c        |    6 +++++
>  4 files changed, 72 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/hot_tracking.c b/fs/hot_tracking.c
> index f97e8a6..fa89f70 100644
> --- a/fs/hot_tracking.c
> +++ b/fs/hot_tracking.c
> @@ -135,6 +135,51 @@ static void hot_rb_free_hot_range_item(struct hot_range_item *hr)
>  	}
>  }
>  
> +static int hot_rb_remove_hot_inode_item(struct hot_inode_tree *tree,
> +                                struct hot_inode_item *he)

hot_inode_item_remove()

> +{
> +        int ret = 0;
> +        rb_erase(&he->rb_node, &tree->map);
> +        he->in_tree = 0;
> +        return ret;
> +}
> +
> +static int hot_rb_remove_hot_range_item(struct hot_range_tree *tree,
> +                                struct hot_range_item *hr)

hot_range_item_remove()

(repeat for other function names ;)

> +{
> +        int ret = 0;
> +        rb_erase(&hr->rb_node, &tree->map);
> +        hr->in_tree = 0;
> +        return ret;
> +}

these can probably be void functions are they don't use the return
value at all.

> +
> +/* Frees the entire hot_inode_tree. */
> +static void hot_rb_inode_tree_free(struct hot_info *root)
> +{
> +	struct rb_node *node, *node2;
> +	struct hot_inode_item *he;
> +	struct hot_range_item *hr;
> +
> +	/* Free hot inode and range trees on fs root */
> +	node = rb_first(&root->hot_inode_tree.map);
> +
> +	while (node) {

	while ((node = rb_first(&root->hot_inode_tree.map))) {

> +		he = rb_entry(node, struct hot_inode_item, rb_node);
> +
> +		node2 = rb_first(&he->hot_range_tree.map);
> +		while (node2) {

		while ((node2 = rb_first(&he->hot_range_tree.map))) {

.....
>  
> +	if (sb->s_hotinfo.mount_opt & HOT_MOUNT_HOT_TRACK)
> +		hot_track_exit(sb);
> +

Let the filesystems call in .put_super()

>  	down_write(&namespace_sem);
>  	br_write_lock(&vfsmount_lock);
>  	event++;
> diff --git a/fs/super.c b/fs/super.c
> index 7eb3b0c..0999d5c 100644
> --- a/fs/super.c
> +++ b/fs/super.c
> @@ -1153,6 +1153,9 @@ mount_fs(struct file_system_type *type, int flags, const char *name, void *data)
>  	WARN_ON(sb->s_bdi == &default_backing_dev_info);
>  	sb->s_flags |= MS_BORN;
>  
> +	if (hottrack)
> +		hot_track_init(sb, name);

And call this in .fill_super() after parsing the hottrack argument.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2012-09-27  2:28 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-23 12:56 [RFC v2 00/10] vfs: hot data tracking zwu.kernel
2012-09-23 12:56 ` [RFC v2 01/10] vfs: introduce private rb structures zwu.kernel
2012-09-25  7:37   ` Dave Chinner
2012-09-25  7:57     ` Zhi Yong Wu
2012-09-25  8:00     ` Zhi Yong Wu
2012-09-25 10:20   ` Ram Pai
2012-09-26  3:20     ` Zhi Yong Wu
2012-09-23 12:56 ` [RFC v2 02/10] vfs: add support for updating access frequency zwu.kernel
2012-09-25  9:17   ` Dave Chinner
2012-09-26  2:53     ` Zhi Yong Wu
2012-09-27  2:19       ` Dave Chinner
2012-09-27  2:30         ` Zhi Yong Wu
2012-09-23 12:56 ` [RFC v2 03/10] vfs: add one new mount option '-o hottrack' zwu.kernel
2012-09-25  9:28   ` Dave Chinner
2012-09-26  2:56     ` Zhi Yong Wu
2012-09-27  2:20       ` Dave Chinner
2012-09-27  2:30         ` Zhi Yong Wu
2012-09-27  5:25     ` Zhi Yong Wu
2012-09-27  7:05       ` Dave Chinner
2012-09-27  7:21         ` Zhi Yong Wu
2012-09-23 12:56 ` [RFC v2 04/10] vfs: add init and exit support zwu.kernel
2012-09-27  2:27   ` Dave Chinner [this message]
2012-09-23 12:56 ` [RFC v2 05/10] vfs: introduce one hash table zwu.kernel
2012-09-25  9:54   ` Ram Pai
2012-09-26  4:08     ` Zhi Yong Wu
2012-09-27  3:43   ` Dave Chinner
2012-09-27  6:23     ` Zhi Yong Wu
2012-09-27  6:57       ` Dave Chinner
2012-09-27  7:10         ` Zhi Yong Wu
2012-09-23 12:56 ` [RFC v2 06/10] vfs: enable hot data tracking zwu.kernel
2012-09-27  3:54   ` Dave Chinner
2012-09-27  6:28     ` Zhi Yong Wu
2012-09-27  6:59       ` Dave Chinner
2012-09-27  7:12         ` Zhi Yong Wu
2012-09-23 12:56 ` [RFC v2 07/10] vfs: fork one kthread to update data temperature zwu.kernel
2012-09-27  4:03   ` Dave Chinner
2012-09-27  6:54     ` Zhi Yong Wu
2012-09-27  7:01       ` Dave Chinner
2012-09-27  7:19         ` Zhi Yong Wu
2012-09-23 12:56 ` [RFC v2 08/10] vfs: add 3 new ioctl interfaces zwu.kernel
2012-09-23 12:56 ` [RFC v2 09/10] vfs: add debugfs support zwu.kernel
2012-09-23 12:56 ` [RFC v2 10/10] vfs: add documentation zwu.kernel

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=20120927022751.GL15236@dastard \
    --to=david@fromorbit.com \
    --cc=chris@csamuel.org \
    --cc=cmm@us.ibm.com \
    --cc=diegocg@gmail.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=marco.stornelli@gmail.com \
    --cc=stroetmann@ontolinux.com \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    --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.