Linux kernel -stable discussions
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: lee.jones@linaro.org, gregkh@google.com, stable@vger.kernel.org
Subject: [PATCH 4.4 9/9] ext4: avoid unnecessary stalls in ext4_evict_inode()
Date: Fri, 22 Nov 2019 10:51:13 +0000	[thread overview]
Message-ID: <20191122105113.11213-9-lee.jones@linaro.org> (raw)
In-Reply-To: <20191122105113.11213-1-lee.jones@linaro.org>

From: Jan Kara <jack@suse.cz>

[ Upstream commit 3abb1a0fc2871f2db52199e1748a1d48a54a3427 ]

These days inode reclaim calls evict_inode() only when it has no pages
in the mapping.  In that case it is not necessary to wait for transaction
commit in ext4_evict_inode() as there can be no pages waiting to be
committed.  So avoid unnecessary transaction waiting in that case.

We still have to keep the check for the case where ext4_evict_inode()
gets called from other paths (e.g. umount) where inode still can have
some page cache pages.

Reported-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 fs/ext4/inode.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 3557c5717c8d..821349149726 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -212,7 +212,8 @@ void ext4_evict_inode(struct inode *inode)
 		 */
 		if (inode->i_ino != EXT4_JOURNAL_INO &&
 		    ext4_should_journal_data(inode) &&
-		    (S_ISLNK(inode->i_mode) || S_ISREG(inode->i_mode))) {
+		    (S_ISLNK(inode->i_mode) || S_ISREG(inode->i_mode)) &&
+		    inode->i_data.nrpages) {
 			journal_t *journal = EXT4_SB(inode->i_sb)->s_journal;
 			tid_t commit_tid = EXT4_I(inode)->i_datasync_tid;
 
-- 
2.24.0


  parent reply	other threads:[~2019-11-22 10:51 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-22 10:51 [PATCH 4.4 1/9] ARM: 8904/1: skip nomap memblocks while finding the lowmem/highmem boundary Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 2/9] can: dev: can_dellink(): remove return at end of void function Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 3/9] arm64: fix for bad_mode() handler to always result in panic Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 4/9] cpufreq: Skip cpufreq resume if it's not suspended Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 5/9] bcache: silence static checker warning Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 6/9] dm: use blk_set_queue_dying() in __dm_destroy() Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 7/9] mmc: block: Fix tag condition with packed writes Lee Jones
2019-11-22 10:51 ` [PATCH 4.4 8/9] ocfs2: remove ocfs2_is_o2cb_active() Lee Jones
2019-11-22 10:51 ` Lee Jones [this message]
2019-11-22 16:32 ` [PATCH 4.4 1/9] ARM: 8904/1: skip nomap memblocks while finding the lowmem/highmem boundary Lee Jones

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=20191122105113.11213-9-lee.jones@linaro.org \
    --to=lee.jones@linaro.org \
    --cc=gregkh@google.com \
    --cc=stable@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox