summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorZhang Yi <yi.zhang@huawei.com>2021-08-26 21:04:07 +0800
committerTheodore Ts'o <tytso@mit.edu>2021-08-30 23:36:51 -0400
commit0904c9ae3465c7acc066a564a76b75c0af83e6c7 (patch)
tree7032de2ca6267fba0c928fc86f5331ece25dbeaf /fs
parent4a79a98c7b19dd3d4cfe9200fbc384ba9119e039 (diff)
ext4: move inode eio simulation behind io completeion
No EIO simulation is required if the buffer is uptodate, so move the simulation behind read bio completeion just like inode/block bitmap simulation does. Signed-off-by: Zhang Yi <yi.zhang@huawei.com> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20210826130412.3921207-2-yi.zhang@huawei.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/inode.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 8fc0dad9fa62..532443f89015 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -4337,8 +4337,6 @@ static int __ext4_get_inode_loc(struct super_block *sb, unsigned long ino,
bh = sb_getblk(sb, block);
if (unlikely(!bh))
return -ENOMEM;
- if (ext4_simulate_fail(sb, EXT4_SIM_INODE_EIO))
- goto simulate_eio;
if (!buffer_uptodate(bh)) {
lock_buffer(bh);
@@ -4425,8 +4423,8 @@ make_io:
ext4_read_bh_nowait(bh, REQ_META | REQ_PRIO, NULL);
blk_finish_plug(&plug);
wait_on_buffer(bh);
+ ext4_simulate_fail_bh(sb, bh, EXT4_SIM_INODE_EIO);
if (!buffer_uptodate(bh)) {
- simulate_eio:
if (ret_block)
*ret_block = block;
brelse(bh);