All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boaz Harrosh <boaz@plexistor.com>
To: Zhao Lei <zhaolei@cn.fujitsu.com>, 'Christoph Hellwig' <hch@lst.de>
Cc: linux-fsdevel@vger.kernel.org, 'Jan Kara' <jack@suse.cz>,
	'Jens Axboe' <axboe@fb.com>,
	'LKML' <linux-kernel@vger.kernel.org>
Subject: Re: Regression caused by using node_to_bdi()
Date: Sun, 12 Apr 2015 14:33:12 +0300	[thread overview]
Message-ID: <552A57F8.7020002@plexistor.com> (raw)
In-Reply-To: <016d01d07380$fc37fc40$f4a7f4c0$@cn.fujitsu.com>

On 04/10/2015 02:25 PM, Zhao Lei wrote:
> Hi, Christoph Hellwig
> 
> resend: + cc lkml, linux-fsdevel
> 
> Since there is no response for my last mail, I worry that some problem in
> the mail system, please allow me to resend it.
> 
> I found regression in v4.0-rc1 caused by this patch:
>  Author: Christoph Hellwig <hch@lst.de>
>  Date:   Wed Jan 14 10:42:36 2015 +0100
>  fs: export inode_to_bdi and use it in favor of mapping->backing_dev_info
> 
<>
> Result is following:
>  v3.19-rc1: testcnt=40 average=135.677 range=[132.460,139.130] stdev=1.610 cv=1.19%
>  v4.0-rc1: testcnt=40 average=130.970 range=[127.980,132.050] stdev=1.012 cv=0.77%
> 
> Then I bisect above case between v3.19-rc1 and v4.0-rc1, and found
> this patch caused the regresstion.
> 
> Maybe it is because kernel need more time to call node_to_bdi(),
> compared with "using inode->i_mapping->backing_dev_info directly" in
> old code.
> 
> Is there some way to speed up it(inline, or some access some variant
> in struct directly, ...)?
> 

Christoph hi

Both node_to_bdi() and sb_is_blkdev_sb() 
 (and I_BDEV() && blk_get_backing_dev_info())
Are an exported function calls.

Can we not make blockdev_superblock->s_bdi == NULL,
and then optimize-out the call to sb_is_blkdev_sb() to only
that case. Something like:

---

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 32a8bbd..e0375e1 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -78,7 +78,7 @@ int writeback_in_progress(struct backing_dev_info *bdi)
 }
 EXPORT_SYMBOL(writeback_in_progress);
 
-struct backing_dev_info *inode_to_bdi(struct inode *inode)
+struct backing_dev_info *__inode_to_bdi(struct inode *inode)
 {
 	struct super_block *sb;
 
@@ -92,7 +92,7 @@ struct backing_dev_info *inode_to_bdi(struct inode *inode)
 #endif
 	return sb->s_bdi;
 }
-EXPORT_SYMBOL_GPL(inode_to_bdi);
+EXPORT_SYMBOL_GPL(__inode_to_bdi);
 
 static inline struct inode *wb_inode(struct list_head *head)
 {
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index aff923a..7d172f5 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -107,7 +107,16 @@ struct backing_dev_info {
 #endif
 };
 
-struct backing_dev_info *inode_to_bdi(struct inode *inode);
+struct backing_dev_info *__inode_to_bdi(struct inode *inode);
+
+static inline
+struct backing_dev_info *inode_to_bdi(struct inode *inode)
+{
+	if (!inode || !inode->i_sb)
+		return __inode_to_bdi(inode);
+
+	return inode->i_sb->s_bdi;
+}
 
 int __must_check bdi_init(struct backing_dev_info *bdi);
 void bdi_destroy(struct backing_dev_info *bdi);

  reply	other threads:[~2015-04-12 11:33 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-10 11:25 Regression caused by using node_to_bdi() Zhao Lei
2015-04-12 11:33 ` Boaz Harrosh [this message]
2015-04-12 14:39   ` Boaz Harrosh
2015-04-13  1:20     ` Zhao Lei
2015-04-13  7:00     ` Zhao Lei
2015-04-13 10:22     ` Zhao Lei
2015-04-13 12:31       ` Boaz Harrosh
2015-04-14 12:14         ` Zhao Lei
2015-04-13 12:21   ` Jan Kara
2015-04-13 12:44     ` Boaz Harrosh
2015-04-13 17:32 ` 'Christoph Hellwig'
2015-04-14 12:27   ` Zhao Lei
     [not found] <003f01d057c6$eb48c3e0$c1da4ba0$@cn.fujitsu.com>
     [not found] ` <20150308102916.GD3743@quack.suse.cz>
     [not found]   ` <20150308153423.GA24154@lst.de>
2015-04-01  9:56     ` Zhao Lei
  -- strict thread matches above, loose matches on Subject: below --
2015-03-06  4:37 Zhao Lei

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=552A57F8.7020002@plexistor.com \
    --to=boaz@plexistor.com \
    --cc=axboe@fb.com \
    --cc=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=zhaolei@cn.fujitsu.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.