summaryrefslogtreecommitdiff
path: root/fs/ext4/move_extent.c
diff options
context:
space:
mode:
authorZhang Yi <yi.zhang@huawei.com>2025-10-13 09:51:28 +0800
committerTheodore Ts'o <tytso@mit.edu>2025-11-06 10:44:39 -0500
commit9dbf945320b11c5865d2f550f8e972566d04d181 (patch)
treec09f37d752a51f1800fce5e494adf0dc9c03f7c7 /fs/ext4/move_extent.c
parent65097262f5ee786e649224ead2c08b7552376269 (diff)
ext4: add two trace points for moving extents
To facilitate tracking the length, type, and outcome of the move extent, add a trace point at both the entry and exit of mext_move_extent(). Signed-off-by: Zhang Yi <yi.zhang@huawei.com> Reviewed-by: Jan Kara <jack@suse.cz> Message-ID: <20251013015128.499308-13-yi.zhang@huaweicloud.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/move_extent.c')
-rw-r--r--fs/ext4/move_extent.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
index f04755c2165a..0550fd30fd10 100644
--- a/fs/ext4/move_extent.c
+++ b/fs/ext4/move_extent.c
@@ -13,6 +13,8 @@
#include "ext4.h"
#include "ext4_extents.h"
+#include <trace/events/ext4.h>
+
struct mext_data {
struct inode *orig_inode; /* Origin file inode */
struct inode *donor_inode; /* Donor file inode */
@@ -311,10 +313,14 @@ static int mext_move_extent(struct mext_data *mext, u64 *m_len)
int ret, ret2;
*m_len = 0;
+ trace_ext4_move_extent_enter(orig_inode, orig_map, donor_inode,
+ mext->donor_lblk);
credits = ext4_chunk_trans_extent(orig_inode, 0) * 2;
handle = ext4_journal_start(orig_inode, EXT4_HT_MOVE_EXTENTS, credits);
- if (IS_ERR(handle))
- return PTR_ERR(handle);
+ if (IS_ERR(handle)) {
+ ret = PTR_ERR(handle);
+ goto out;
+ }
ret = mext_move_begin(mext, folio, &move_type);
if (ret)
@@ -379,6 +385,10 @@ unlock:
mext_folio_double_unlock(folio);
stop_handle:
ext4_journal_stop(handle);
+out:
+ trace_ext4_move_extent_exit(orig_inode, orig_map->m_lblk, donor_inode,
+ mext->donor_lblk, orig_map->m_len, *m_len,
+ move_type, ret);
return ret;
repair_branches: