]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
f2fs: trace elapsed time for node_change lock
authorChao Yu <chao@kernel.org>
Sun, 4 Jan 2026 02:07:19 +0000 (10:07 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 7 Jan 2026 03:17:06 +0000 (03:17 +0000)
Use f2fs_{down,up}_read_trace for node_change to trace lock elapsed time.

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/f2fs/super.c
include/trace/events/f2fs.h

index 73fcafbc819128651d385d082b272c4e4244f805..5469547142e7c3aeca26a4af84f975561358fae8 100644 (file)
@@ -1472,7 +1472,7 @@ static void f2fs_map_lock(struct f2fs_sb_info *sbi,
 {
        f2fs_down_read(&sbi->cp_enable_rwsem);
        if (flag == F2FS_GET_BLOCK_PRE_AIO)
-               f2fs_down_read(&sbi->node_change);
+               f2fs_down_read_trace(&sbi->node_change, lc);
        else
                f2fs_lock_op(sbi, lc);
 }
@@ -1482,7 +1482,7 @@ static void f2fs_map_unlock(struct f2fs_sb_info *sbi,
                                int flag)
 {
        if (flag == F2FS_GET_BLOCK_PRE_AIO)
-               f2fs_up_read(&sbi->node_change);
+               f2fs_up_read_trace(&sbi->node_change, lc);
        else
                f2fs_unlock_op(sbi, lc);
        f2fs_up_read(&sbi->cp_enable_rwsem);
index 58244bb87fef51d51ad85475125152aa3cc235c8..8f6a255f9e57f3a0e8b246e8a2a7af057d46d8a3 100644 (file)
@@ -176,6 +176,7 @@ enum device_allocation_policy {
 enum f2fs_lock_name {
        LOCK_NAME_NONE,
        LOCK_NAME_CP_RWSEM,
+       LOCK_NAME_NODE_CHANGE,
 };
 
 /*
index d70567b48d12817307594f2e42996882bd7b687e..247638b98cfbb73ddbed5ff30b9ed43c61e27c1d 100644 (file)
@@ -4897,7 +4897,7 @@ try_onemore:
        mutex_init(&sbi->writepages);
        init_f2fs_rwsem(&sbi->cp_global_sem);
        init_f2fs_rwsem(&sbi->node_write);
-       init_f2fs_rwsem(&sbi->node_change);
+       init_f2fs_rwsem_trace(&sbi->node_change, sbi, LOCK_NAME_NODE_CHANGE);
        spin_lock_init(&sbi->stat_lock);
        init_f2fs_rwsem_trace(&sbi->cp_rwsem, sbi, LOCK_NAME_CP_RWSEM);
        init_f2fs_rwsem(&sbi->cp_enable_rwsem);
index f4f13ddbe1042f67995c214b23798a87ecfba69c..d472f47eedecd82ca2761f303740eee8a7dd0a83 100644 (file)
@@ -186,7 +186,8 @@ TRACE_DEFINE_ENUM(CP_PHASE_FINISH_CHECKPOINT);
 
 #define show_lock_name(lock)                                           \
        __print_symbolic(lock,                                          \
-               { LOCK_NAME_CP_RWSEM,           "cp_rwsem" })
+               { LOCK_NAME_CP_RWSEM,           "cp_rwsem" },           \
+               { LOCK_NAME_NODE_CHANGE,        "node_change" })
 
 struct f2fs_sb_info;
 struct f2fs_io_info;