From: Jan Kara <jack@suse.cz>
To: Brian Foster <bfoster@redhat.com>
Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com,
jbacik@fb.com, jack@suse.cz
Subject: Re: [PATCH v6 2/2] wb: inode writeback list tracking tracepoints
Date: Wed, 20 Jan 2016 14:14:40 +0100 [thread overview]
Message-ID: <20160120131440.GD10810@quack.suse.cz> (raw)
In-Reply-To: <1453226353-61481-3-git-send-email-bfoster@redhat.com>
On Tue 19-01-16 12:59:13, Brian Foster wrote:
> The per-sb inode writeback list tracks inodes currently under writeback
> to facilitate efficient sync processing. In particular, it ensures that
> sync only needs to walk through a list of inodes that were cleaned by
> the sync.
>
> Add a couple tracepoints to help identify when inodes are added/removed
> to and from the writeback lists. Piggyback off of the writeback lazytime
> tracepoint template as it already tracks the relevant inode information.
The patch looks good. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
>
> Signed-off-by: Brian Foster <bfoster@redhat.com>
> ---
> fs/fs-writeback.c | 9 +++++++--
> include/trace/events/writeback.h | 22 ++++++++++++++++++----
> 2 files changed, 25 insertions(+), 6 deletions(-)
>
> diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> index 63b878b..3a62013 100644
> --- a/fs/fs-writeback.c
> +++ b/fs/fs-writeback.c
> @@ -952,8 +952,10 @@ void sb_mark_inode_writeback(struct inode *inode)
>
> if (list_empty(&inode->i_wb_list)) {
> spin_lock_irqsave(&sb->s_inode_wblist_lock, flags);
> - if (list_empty(&inode->i_wb_list))
> + if (list_empty(&inode->i_wb_list)) {
> list_add_tail(&inode->i_wb_list, &sb->s_inodes_wb);
> + trace_sb_mark_inode_writeback(inode);
> + }
> spin_unlock_irqrestore(&sb->s_inode_wblist_lock, flags);
> }
> }
> @@ -968,7 +970,10 @@ void sb_clear_inode_writeback(struct inode *inode)
>
> if (!list_empty(&inode->i_wb_list)) {
> spin_lock_irqsave(&sb->s_inode_wblist_lock, flags);
> - list_del_init(&inode->i_wb_list);
> + if (!list_empty(&inode->i_wb_list)) {
> + list_del_init(&inode->i_wb_list);
> + trace_sb_clear_inode_writeback(inode);
> + }
> spin_unlock_irqrestore(&sb->s_inode_wblist_lock, flags);
> }
> }
> diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
> index fff846b..962a7f1 100644
> --- a/include/trace/events/writeback.h
> +++ b/include/trace/events/writeback.h
> @@ -727,7 +727,7 @@ DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode,
> TP_ARGS(inode, wbc, nr_to_write)
> );
>
> -DECLARE_EVENT_CLASS(writeback_lazytime_template,
> +DECLARE_EVENT_CLASS(writeback_inode_template,
> TP_PROTO(struct inode *inode),
>
> TP_ARGS(inode),
> @@ -754,25 +754,39 @@ DECLARE_EVENT_CLASS(writeback_lazytime_template,
> show_inode_state(__entry->state), __entry->mode)
> );
>
> -DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime,
> +DEFINE_EVENT(writeback_inode_template, writeback_lazytime,
> TP_PROTO(struct inode *inode),
>
> TP_ARGS(inode)
> );
>
> -DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime_iput,
> +DEFINE_EVENT(writeback_inode_template, writeback_lazytime_iput,
> TP_PROTO(struct inode *inode),
>
> TP_ARGS(inode)
> );
>
> -DEFINE_EVENT(writeback_lazytime_template, writeback_dirty_inode_enqueue,
> +DEFINE_EVENT(writeback_inode_template, writeback_dirty_inode_enqueue,
>
> TP_PROTO(struct inode *inode),
>
> TP_ARGS(inode)
> );
>
> +/*
> + * Inode writeback list tracking.
> + */
> +
> +DEFINE_EVENT(writeback_inode_template, sb_mark_inode_writeback,
> + TP_PROTO(struct inode *inode),
> + TP_ARGS(inode)
> +);
> +
> +DEFINE_EVENT(writeback_inode_template, sb_clear_inode_writeback,
> + TP_PROTO(struct inode *inode),
> + TP_ARGS(inode)
> +);
> +
> #endif /* _TRACE_WRITEBACK_H */
>
> /* This part must be outside protection */
> --
> 2.4.3
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
prev parent reply other threads:[~2016-01-20 13:14 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-19 17:59 [PATCH v6 0/2] improve sync efficiency with sb inode wb list Brian Foster
2016-01-19 17:59 ` [PATCH v6 1/2] sb: add a new writeback list for sync Brian Foster
2016-01-20 13:26 ` Jan Kara
2016-01-20 20:11 ` Dave Chinner
2016-01-21 15:22 ` Brian Foster
2016-01-21 16:34 ` Jan Kara
2016-01-21 17:13 ` Brian Foster
2016-01-21 18:08 ` Josef Bacik
2016-01-19 17:59 ` [PATCH v6 2/2] wb: inode writeback list tracking tracepoints Brian Foster
2016-01-20 13:14 ` Jan Kara [this message]
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=20160120131440.GD10810@quack.suse.cz \
--to=jack@suse.cz \
--cc=bfoster@redhat.com \
--cc=dchinner@redhat.com \
--cc=jbacik@fb.com \
--cc=linux-fsdevel@vger.kernel.org \
/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.