2017-08-20 11:52:30

by Wang Shilong

[permalink] [raw]
Subject: [PATCH 1/3] ext4: Do not unnecessarily allocate buffer in recently_deleted()

From: Jan Kara <[email protected]>

From: Jan Kara <[email protected]>

In recently_deleted() function we want to check whether inode is still
cached in buffer cache. Use sb_find_get_block() for that instead of
sb_getblk() to avoid unnecessary allocation of bdev page and buffer
heads.

Signed-off-by: Jan Kara <[email protected]>
---
fs/ext4/ialloc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index 507bfb3..0d03e73 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -707,9 +707,9 @@ static int recently_deleted(struct super_block *sb, ext4_group_t group, int ino)
if (unlikely(!gdp))
return 0;

- bh = sb_getblk(sb, ext4_inode_table(sb, gdp) +
+ bh = sb_find_get_block(sb, ext4_inode_table(sb, gdp) +
(ino / inodes_per_block));
- if (unlikely(!bh) || !buffer_uptodate(bh))
+ if (!bh || !buffer_uptodate(bh))
/*
* If the block is not in the buffer cache, then it
* must have been written out.
--
2.9.3


2017-08-24 15:57:19

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH 1/3] ext4: Do not unnecessarily allocate buffer in recently_deleted()

On Sun, Aug 20, 2017 at 07:52:09PM +0800, Wang Shilong wrote:
> From: Jan Kara <[email protected]>
>
> From: Jan Kara <[email protected]>
>
> In recently_deleted() function we want to check whether inode is still
> cached in buffer cache. Use sb_find_get_block() for that instead of
> sb_getblk() to avoid unnecessary allocation of bdev page and buffer
> heads.
>
> Signed-off-by: Jan Kara <[email protected]>

Thanks, applied.

- Ted