Re: [PATCH v2] ext4: lost matching-pair of trace in ext4_truncate

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 7/1/20 2:00 PM, zhengliang wrote:
It should call trace exit in all return path for ext4_truncate.

v2:
It shoule call trace exit in all return path, and add "out_trace" label to avoid the
multiple copies of the cleanup code in each error case.

v2 description should generally go below three dashed line so that
it need not become part of commit msg.



Signed-off-by: zhengliang <zhengliang6@xxxxxxxxxx>

LGTM, feel free to add
Reviewed-by: Ritesh Harjani <riteshh@xxxxxxxxxxxxx>


---
  fs/ext4/inode.c | 17 +++++++++--------
  1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 10dd470876b3..6187c8880c02 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -4163,7 +4163,7 @@ int ext4_truncate(struct inode *inode)
  	trace_ext4_truncate_enter(inode);

  	if (!ext4_can_truncate(inode))
-		return 0;
+		goto out_trace;

  	if (inode->i_size == 0 && !test_opt(inode->i_sb, NO_AUTO_DA_ALLOC))
  		ext4_set_inode_state(inode, EXT4_STATE_DA_ALLOC_CLOSE);
@@ -4172,16 +4172,14 @@ int ext4_truncate(struct inode *inode)
  		int has_inline = 1;

  		err = ext4_inline_data_truncate(inode, &has_inline);
-		if (err)
-			return err;
-		if (has_inline)
-			return 0;
+		if (err || has_inline)
+			goto out_trace;
  	}

  	/* If we zero-out tail of the page, we have to create jinode for jbd2 */
  	if (inode->i_size & (inode->i_sb->s_blocksize - 1)) {
  		if (ext4_inode_attach_jinode(inode) < 0)
-			return 0;
+			goto out_trace;
  	}

  	if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))
@@ -4190,8 +4188,10 @@ int ext4_truncate(struct inode *inode)
  		credits = ext4_blocks_for_truncate(inode);

  	handle = ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits);
-	if (IS_ERR(handle))
-		return PTR_ERR(handle);
+	if (IS_ERR(handle)) {
+		err = PTR_ERR(handle);
+		goto out_trace;
+	}

  	if (inode->i_size & (inode->i_sb->s_blocksize - 1))
  		ext4_block_truncate_page(handle, mapping, inode->i_size);
@@ -4242,6 +4242,7 @@ int ext4_truncate(struct inode *inode)
  		err = err2;
  	ext4_journal_stop(handle);

+out_trace:
  	trace_ext4_truncate_exit(inode);
  	return err;
  }




[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux