162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * fs/hmdfs/hmdfs_trace.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#undef TRACE_SYSTEM
962306a36Sopenharmony_ci#define TRACE_SYSTEM hmdfs
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#if !defined(__HMDFS_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define __HMDFS_TRACE_H__
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <linux/tracepoint.h>
1662306a36Sopenharmony_ci#include "comm/protocol.h"
1762306a36Sopenharmony_ci#include "hmdfs_dentryfile.h"
1862306a36Sopenharmony_ci#include "hmdfs_client.h"
1962306a36Sopenharmony_ci#include "hmdfs_device_view.h"
2062306a36Sopenharmony_ci#include "hmdfs_merge_view.h"
2162306a36Sopenharmony_ci#include "client_writeback.h"
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciTRACE_EVENT(hmdfs_permission,
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	    TP_PROTO(unsigned long ino),
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	    TP_ARGS(ino),
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	    TP_STRUCT__entry(__field(unsigned long, ino)),
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	    TP_fast_assign(__entry->ino = ino;),
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	    TP_printk("permission check for ino %lu failed", __entry->ino));
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci/* communication */
3662306a36Sopenharmony_ciTRACE_EVENT(hmdfs_recv_mesg_callback,
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_head_cmd *cmd),
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	TP_ARGS(cmd),
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	TP_STRUCT__entry(
4362306a36Sopenharmony_ci		__field(__u32, msg_id)
4462306a36Sopenharmony_ci		__field(__u32, magic)
4562306a36Sopenharmony_ci		__field(__u16, command)
4662306a36Sopenharmony_ci		__field(__u16, cmd_flag)
4762306a36Sopenharmony_ci		__field(__u32, data_len)
4862306a36Sopenharmony_ci		__field(__u32, ret_code)
4962306a36Sopenharmony_ci	),
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	TP_fast_assign(
5262306a36Sopenharmony_ci		__entry->msg_id = le32_to_cpu(cmd->msg_id);
5362306a36Sopenharmony_ci		__entry->magic = cmd->magic;
5462306a36Sopenharmony_ci		__entry->command = cmd->operations.command;
5562306a36Sopenharmony_ci		__entry->cmd_flag = cmd->operations.cmd_flag;
5662306a36Sopenharmony_ci		__entry->data_len = cmd->data_len;
5762306a36Sopenharmony_ci		__entry->ret_code = cmd->ret_code;
5862306a36Sopenharmony_ci	),
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	TP_printk("msg_id:%u magic:%u command:%hu, cmd_flag:%hu, data_len:%u, ret_code:%u",
6162306a36Sopenharmony_ci		__entry->msg_id, __entry->magic, __entry->command,
6262306a36Sopenharmony_ci		__entry->cmd_flag, __entry->data_len, __entry->ret_code)
6362306a36Sopenharmony_ci);
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciTRACE_EVENT(hmdfs_tcp_send_message,
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_head_cmd *cmd),
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	TP_ARGS(cmd),
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci	TP_STRUCT__entry(
7262306a36Sopenharmony_ci		__field(__u32, msg_id)
7362306a36Sopenharmony_ci		__field(__u32, magic)
7462306a36Sopenharmony_ci		__field(__u16, command)
7562306a36Sopenharmony_ci		__field(__u16, cmd_flag)
7662306a36Sopenharmony_ci		__field(__u32, data_len)
7762306a36Sopenharmony_ci		__field(__u32, ret_code)
7862306a36Sopenharmony_ci	),
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci	TP_fast_assign(
8162306a36Sopenharmony_ci		__entry->msg_id = le32_to_cpu(cmd->msg_id);
8262306a36Sopenharmony_ci		__entry->magic = cmd->magic;
8362306a36Sopenharmony_ci		__entry->command = cmd->operations.command;
8462306a36Sopenharmony_ci		__entry->cmd_flag = cmd->operations.cmd_flag;
8562306a36Sopenharmony_ci		__entry->data_len = cmd->data_len;
8662306a36Sopenharmony_ci		__entry->ret_code = cmd->ret_code;
8762306a36Sopenharmony_ci	),
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	TP_printk("msg_id:%u magic:%u command:%hu, cmd_flag:%hu, data_len:%u, ret_code:%u",
9062306a36Sopenharmony_ci		__entry->msg_id, __entry->magic, __entry->command,
9162306a36Sopenharmony_ci		__entry->cmd_flag, __entry->data_len, __entry->ret_code)
9262306a36Sopenharmony_ci);
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci/* file system interface */
9562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hmdfs_iterate_op_end,
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci	TP_PROTO(struct dentry *__d, loff_t start_pos, loff_t end_pos, int err),
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci	TP_ARGS(__d, start_pos, end_pos, err),
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	TP_STRUCT__entry(
10262306a36Sopenharmony_ci		__string(name_str, __d->d_name.name)
10362306a36Sopenharmony_ci		__field(loff_t, start)
10462306a36Sopenharmony_ci		__field(loff_t, end)
10562306a36Sopenharmony_ci		__field(int, err)
10662306a36Sopenharmony_ci	),
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci	TP_fast_assign(
10962306a36Sopenharmony_ci		__assign_str(name_str, __d->d_name.name);
11062306a36Sopenharmony_ci		__entry->start = start_pos;
11162306a36Sopenharmony_ci		__entry->end = end_pos;
11262306a36Sopenharmony_ci		__entry->err = err;
11362306a36Sopenharmony_ci	),
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci	TP_printk("dentry[%s] start_pos:%llx, end_pos:%llx, err:%d",
11662306a36Sopenharmony_ci		__get_str(name_str), __entry->start,
11762306a36Sopenharmony_ci		__entry->end, __entry->err)
11862306a36Sopenharmony_ci);
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci#define define_hmdfs_iterate_op_end_event(event_name)                          \
12162306a36Sopenharmony_ci	DEFINE_EVENT(hmdfs_iterate_op_end, event_name,                         \
12262306a36Sopenharmony_ci		     TP_PROTO(struct dentry *__d, loff_t start_pos,            \
12362306a36Sopenharmony_ci			      loff_t end_pos, int err),                        \
12462306a36Sopenharmony_ci		     TP_ARGS(__d, start_pos, end_pos, err))
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_cidefine_hmdfs_iterate_op_end_event(hmdfs_iterate_local);
12762306a36Sopenharmony_cidefine_hmdfs_iterate_op_end_event(hmdfs_iterate_remote);
12862306a36Sopenharmony_cidefine_hmdfs_iterate_op_end_event(hmdfs_iterate_merge);
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ciTRACE_EVENT(hmdfs_lookup,
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci	TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci	TP_ARGS(dir, dentry, flags),
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci	TP_STRUCT__entry(
13862306a36Sopenharmony_ci		__field(ino_t, ino)
13962306a36Sopenharmony_ci		__string(name_str, dentry->d_name.name)
14062306a36Sopenharmony_ci		__field(unsigned int, flags)
14162306a36Sopenharmony_ci	),
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	TP_fast_assign(
14462306a36Sopenharmony_ci		__entry->ino = dir->i_ino;
14562306a36Sopenharmony_ci		__assign_str(name_str, dentry->d_name.name);
14662306a36Sopenharmony_ci		__entry->flags = flags;
14762306a36Sopenharmony_ci	),
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci	TP_printk("parent_ino = %lu, name:%s, flags:%u",
15062306a36Sopenharmony_ci		__entry->ino, __get_str(name_str), __entry->flags)
15162306a36Sopenharmony_ci);
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hmdfs_lookup_op_end,
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci	TP_PROTO(struct inode *dir, struct dentry *dentry, int err),
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci	TP_ARGS(dir, dentry, err),
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci	TP_STRUCT__entry(
16062306a36Sopenharmony_ci		__field(ino_t, ino)
16162306a36Sopenharmony_ci		__string(name_str, dentry->d_name.name)
16262306a36Sopenharmony_ci		__field(int, err)
16362306a36Sopenharmony_ci	),
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	TP_fast_assign(
16662306a36Sopenharmony_ci		__entry->ino = dir->i_ino;
16762306a36Sopenharmony_ci		__assign_str(name_str, dentry->d_name.name);
16862306a36Sopenharmony_ci		__entry->err = err;
16962306a36Sopenharmony_ci	),
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci	TP_printk("parent_ino = %lu, name:%s, err:%d",
17262306a36Sopenharmony_ci		__entry->ino, __get_str(name_str), __entry->err)
17362306a36Sopenharmony_ci);
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci#define define_hmdfs_lookup_op_end_event(event_name)                           \
17662306a36Sopenharmony_ci	DEFINE_EVENT(hmdfs_lookup_op_end, event_name,                          \
17762306a36Sopenharmony_ci		     TP_PROTO(struct inode *dir, struct dentry *dentry,        \
17862306a36Sopenharmony_ci			      int err),                                        \
17962306a36Sopenharmony_ci		     TP_ARGS(dir, dentry, err))
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_root_lookup);
18362306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_root_lookup_end);
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_device_lookup);
18662306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_device_lookup_end);
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_local);
18962306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_local_end);
19062306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_mkdir_local);
19162306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_rmdir_local);
19262306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_create_local);
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_remote);
19562306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_remote_end);
19662306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_mkdir_remote);
19762306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_rmdir_remote);
19862306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_create_remote);
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_merge);
20162306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_merge_end);
20262306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_mkdir_merge);
20362306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_rmdir_merge);
20462306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_create_merge);
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_get_link_local);
20762306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_share);
20862306a36Sopenharmony_cidefine_hmdfs_lookup_op_end_event(hmdfs_lookup_share_end);
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ciTRACE_EVENT(hmdfs_show_comrade,
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci	TP_PROTO(struct dentry *d, struct dentry *lo_d, uint64_t devid),
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci	TP_ARGS(d, lo_d, devid),
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci	TP_STRUCT__entry(
21762306a36Sopenharmony_ci		__string(name, d->d_name.name)
21862306a36Sopenharmony_ci		__string(lo_name, lo_d->d_name.name)
21962306a36Sopenharmony_ci		__field(uint64_t, devid)
22062306a36Sopenharmony_ci	),
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci	TP_fast_assign(
22362306a36Sopenharmony_ci		__assign_str(name, d->d_name.name)
22462306a36Sopenharmony_ci		__assign_str(lo_name, lo_d->d_name.name)
22562306a36Sopenharmony_ci		__entry->devid = devid;
22662306a36Sopenharmony_ci	),
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci	TP_printk("parent_name:%s -> lo_d_name:%s, lo_d_devid:%llu",
22962306a36Sopenharmony_ci		  __get_str(name), __get_str(lo_name), __entry->devid)
23062306a36Sopenharmony_ci);
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hmdfs_rename_op_end,
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci	TP_PROTO(struct inode *olddir, struct dentry *olddentry,
23562306a36Sopenharmony_ci		 struct inode *newdir, struct dentry *newdentry,
23662306a36Sopenharmony_ci		 unsigned int flags),
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci	TP_ARGS(olddir, olddentry, newdir, newdentry, flags),
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci	TP_STRUCT__entry(
24162306a36Sopenharmony_ci		__field(ino_t, oldino)
24262306a36Sopenharmony_ci		__string(oldname_str, olddentry->d_name.name)
24362306a36Sopenharmony_ci		__field(ino_t, newino)
24462306a36Sopenharmony_ci		__string(newname_str, newdentry->d_name.name)
24562306a36Sopenharmony_ci		__field(unsigned int, flags)
24662306a36Sopenharmony_ci	),
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci	TP_fast_assign(
24962306a36Sopenharmony_ci		__entry->oldino = olddir->i_ino;
25062306a36Sopenharmony_ci		__assign_str(oldname_str, olddentry->d_name.name);
25162306a36Sopenharmony_ci		__entry->newino = newdir->i_ino;
25262306a36Sopenharmony_ci		__assign_str(newname_str, newdentry->d_name.name);
25362306a36Sopenharmony_ci		__entry->flags = flags;
25462306a36Sopenharmony_ci	),
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci	TP_printk("old_pino = %lu, oldname:%s; new_pino = %lu, newname:%s, flags:%u",
25762306a36Sopenharmony_ci		__entry->oldino, __get_str(oldname_str),
25862306a36Sopenharmony_ci		__entry->newino, __get_str(newname_str), __entry->flags)
25962306a36Sopenharmony_ci);
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci#define define_hmdfs_rename_op_end_event(event_name)                           \
26262306a36Sopenharmony_ci	DEFINE_EVENT(hmdfs_rename_op_end, event_name,                          \
26362306a36Sopenharmony_ci		     TP_PROTO(struct inode *olddir, struct dentry *olddentry,  \
26462306a36Sopenharmony_ci			      struct inode *newdir, struct dentry *newdentry,  \
26562306a36Sopenharmony_ci			      unsigned int flags),                             \
26662306a36Sopenharmony_ci		     TP_ARGS(olddir, olddentry, newdir, newdentry, flags))
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_cidefine_hmdfs_rename_op_end_event(hmdfs_rename_local);
26962306a36Sopenharmony_cidefine_hmdfs_rename_op_end_event(hmdfs_rename_remote);
27062306a36Sopenharmony_cidefine_hmdfs_rename_op_end_event(hmdfs_rename_merge);
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ciTRACE_EVENT(hmdfs_statfs,
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ci	TP_PROTO(struct dentry *d, uint8_t type),
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci	TP_ARGS(d, type),
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_ci	TP_STRUCT__entry(
27962306a36Sopenharmony_ci		__string(name, d->d_name.name)
28062306a36Sopenharmony_ci		__field(uint8_t, type)
28162306a36Sopenharmony_ci	),
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci	TP_fast_assign(
28462306a36Sopenharmony_ci		__assign_str(name, d->d_name.name)
28562306a36Sopenharmony_ci		__entry->type = type;
28662306a36Sopenharmony_ci	),
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci	TP_printk("dentry_name:%s, lo_d_devid:%u",
28962306a36Sopenharmony_ci		  __get_str(name), __entry->type)
29062306a36Sopenharmony_ci);
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciTRACE_EVENT(hmdfs_balance_dirty_pages_ratelimited,
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_sb_info *sbi,
29762306a36Sopenharmony_ci		 struct hmdfs_writeback *hwb,
29862306a36Sopenharmony_ci		 int bdp_ratelimits),
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ci	TP_ARGS(sbi, hwb, bdp_ratelimits),
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci	TP_STRUCT__entry(
30362306a36Sopenharmony_ci		__array(char, dst, 128)
30462306a36Sopenharmony_ci		__field(int, nr_dirtied)
30562306a36Sopenharmony_ci		__field(int, nr_dirtied_pause)
30662306a36Sopenharmony_ci		__field(int, dirty_exceeded)
30762306a36Sopenharmony_ci		__field(long long, bdp_ratelimits)
30862306a36Sopenharmony_ci		__field(long, ratelimit_pages)
30962306a36Sopenharmony_ci	),
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_ci	TP_fast_assign(
31262306a36Sopenharmony_ci		    strlcpy(__entry->dst, sbi->local_dst, 128);
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ci		    __entry->nr_dirtied	= current->nr_dirtied;
31562306a36Sopenharmony_ci		    __entry->nr_dirtied_pause = current->nr_dirtied_pause;
31662306a36Sopenharmony_ci		    __entry->dirty_exceeded = hwb->dirty_exceeded;
31762306a36Sopenharmony_ci		    __entry->bdp_ratelimits = bdp_ratelimits;
31862306a36Sopenharmony_ci		    __entry->ratelimit_pages = hwb->ratelimit_pages;
31962306a36Sopenharmony_ci	),
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci	TP_printk("hmdfs dst:%s nr_dirtied=%d nr_dirtied_pause=%d dirty_exceeded=%d bdp_ratelimits=%lld ratelimit_pages=%ld",
32262306a36Sopenharmony_ci		  __entry->dst, __entry->nr_dirtied, __entry->nr_dirtied_pause,
32362306a36Sopenharmony_ci		  __entry->dirty_exceeded, __entry->bdp_ratelimits,
32462306a36Sopenharmony_ci		  __entry->ratelimit_pages)
32562306a36Sopenharmony_ci);
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ciTRACE_EVENT(hmdfs_balance_dirty_pages,
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ci	    TP_PROTO(struct hmdfs_sb_info *sbi,
33062306a36Sopenharmony_ci		     struct bdi_writeback *wb,
33162306a36Sopenharmony_ci		     struct hmdfs_dirty_throttle_control *hdtc,
33262306a36Sopenharmony_ci		     unsigned long pause,
33362306a36Sopenharmony_ci		     unsigned long start_time),
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci	    TP_ARGS(sbi, wb, hdtc, pause, start_time),
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ci	    TP_STRUCT__entry(
33862306a36Sopenharmony_ci		    __array(char, dst, 128)
33962306a36Sopenharmony_ci		    __field(unsigned long, write_bw)
34062306a36Sopenharmony_ci		    __field(unsigned long, avg_write_bw)
34162306a36Sopenharmony_ci		    __field(unsigned long, file_bg_thresh)
34262306a36Sopenharmony_ci		    __field(unsigned long, fs_bg_thresh)
34362306a36Sopenharmony_ci		    __field(unsigned long, file_thresh)
34462306a36Sopenharmony_ci		    __field(unsigned long, fs_thresh)
34562306a36Sopenharmony_ci		    __field(unsigned long, file_nr_dirty)
34662306a36Sopenharmony_ci		    __field(unsigned long, fs_nr_dirty)
34762306a36Sopenharmony_ci		    __field(unsigned long, file_nr_rec)
34862306a36Sopenharmony_ci		    __field(unsigned long, fs_nr_rec)
34962306a36Sopenharmony_ci		    __field(unsigned long, pause)
35062306a36Sopenharmony_ci		    __field(unsigned long, paused)
35162306a36Sopenharmony_ci	    ),
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci	    TP_fast_assign(
35462306a36Sopenharmony_ci		    strlcpy(__entry->dst, sbi->local_dst, 128);
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci		    __entry->write_bw		= wb->write_bandwidth;
35762306a36Sopenharmony_ci		    __entry->avg_write_bw	= wb->avg_write_bandwidth;
35862306a36Sopenharmony_ci		    __entry->file_bg_thresh	= hdtc->file_bg_thresh;
35962306a36Sopenharmony_ci		    __entry->fs_bg_thresh	= hdtc->fs_bg_thresh;
36062306a36Sopenharmony_ci		    __entry->file_thresh	= hdtc->file_thresh;
36162306a36Sopenharmony_ci		    __entry->fs_thresh		= hdtc->fs_thresh;
36262306a36Sopenharmony_ci		    __entry->file_nr_dirty	= hdtc->file_nr_dirty;
36362306a36Sopenharmony_ci		    __entry->fs_nr_dirty	= hdtc->fs_nr_dirty;
36462306a36Sopenharmony_ci		    __entry->file_nr_rec	= hdtc->file_nr_reclaimable;
36562306a36Sopenharmony_ci		    __entry->fs_nr_rec		= hdtc->fs_nr_reclaimable;
36662306a36Sopenharmony_ci		    __entry->pause		= pause * 1000 / HZ;
36762306a36Sopenharmony_ci		    __entry->paused		= (jiffies - start_time) *
36862306a36Sopenharmony_ci						  1000 / HZ;
36962306a36Sopenharmony_ci	    ),
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci	    TP_printk("hmdfs dst:%s write_bw=%lu, awrite_bw=%lu, bg_thresh=%lu,%lu thresh=%lu,%lu dirty=%lu,%lu reclaimable=%lu,%lu pause=%lu paused=%lu",
37262306a36Sopenharmony_ci		      __entry->dst, __entry->write_bw, __entry->avg_write_bw,
37362306a36Sopenharmony_ci		      __entry->file_bg_thresh, __entry->fs_bg_thresh,
37462306a36Sopenharmony_ci		      __entry->file_thresh, __entry->fs_thresh,
37562306a36Sopenharmony_ci		      __entry->file_nr_dirty, __entry->fs_nr_dirty,
37662306a36Sopenharmony_ci		      __entry->file_nr_rec, __entry->fs_nr_rec,
37762306a36Sopenharmony_ci		      __entry->pause, __entry->paused
37862306a36Sopenharmony_ci	    )
37962306a36Sopenharmony_ci);
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ciTRACE_EVENT(hmdfs_start_srv_wb,
38262306a36Sopenharmony_ci
38362306a36Sopenharmony_ci	    TP_PROTO(struct hmdfs_sb_info *sbi, int dirty_pages,
38462306a36Sopenharmony_ci		    unsigned int dirty_thresh_pg),
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci	    TP_ARGS(sbi, dirty_pages, dirty_thresh_pg),
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci	    TP_STRUCT__entry(
38962306a36Sopenharmony_ci		     __array(char, src, 128)
39062306a36Sopenharmony_ci		     __field(int, dirty_pages)
39162306a36Sopenharmony_ci		     __field(unsigned int, dirty_thresh_pg)
39262306a36Sopenharmony_ci	    ),
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci	    TP_fast_assign(
39562306a36Sopenharmony_ci		    strlcpy(__entry->src, sbi->local_src, 128);
39662306a36Sopenharmony_ci		    __entry->dirty_pages = dirty_pages;
39762306a36Sopenharmony_ci		    __entry->dirty_thresh_pg = dirty_thresh_pg;
39862306a36Sopenharmony_ci	    ),
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci	    TP_printk("hmdfs src: %s, start writeback dirty pages. writeback %d pages dirty_thresh is %d pages",
40162306a36Sopenharmony_ci		      __entry->src, __entry->dirty_pages, __entry->dirty_thresh_pg)
40262306a36Sopenharmony_ci);
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ciTRACE_EVENT(hmdfs_fsync_enter_remote,
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_sb_info *sbi, unsigned long long device_id,
40762306a36Sopenharmony_ci		 unsigned long long remote_ino, int datasync),
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ci	TP_ARGS(sbi, device_id, remote_ino, datasync),
41062306a36Sopenharmony_ci
41162306a36Sopenharmony_ci	TP_STRUCT__entry(
41262306a36Sopenharmony_ci		__array(char, src, 128)
41362306a36Sopenharmony_ci		__field(uint64_t, device_id)
41462306a36Sopenharmony_ci		__field(uint64_t, remote_ino)
41562306a36Sopenharmony_ci		__field(int, datasync)
41662306a36Sopenharmony_ci	),
41762306a36Sopenharmony_ci
41862306a36Sopenharmony_ci	TP_fast_assign(
41962306a36Sopenharmony_ci		strlcpy(__entry->src, sbi->local_src, 128);
42062306a36Sopenharmony_ci		__entry->device_id = device_id;
42162306a36Sopenharmony_ci		__entry->remote_ino = remote_ino;
42262306a36Sopenharmony_ci		__entry->datasync = datasync;
42362306a36Sopenharmony_ci	),
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, start remote fsync file(remote dev_id=%llu,ino=%llu), datasync=%d",
42662306a36Sopenharmony_ci		__entry->src, __entry->device_id,
42762306a36Sopenharmony_ci		__entry->remote_ino, __entry->datasync)
42862306a36Sopenharmony_ci);
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ciTRACE_EVENT(hmdfs_fsync_exit_remote,
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_sb_info *sbi, unsigned long long device_id,
43362306a36Sopenharmony_ci		 unsigned long long remote_ino, unsigned int timeout, int err),
43462306a36Sopenharmony_ci
43562306a36Sopenharmony_ci	TP_ARGS(sbi, device_id, remote_ino, timeout, err),
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ci	TP_STRUCT__entry(
43862306a36Sopenharmony_ci		__array(char, src, 128)
43962306a36Sopenharmony_ci		__field(uint64_t, device_id)
44062306a36Sopenharmony_ci		__field(uint64_t, remote_ino)
44162306a36Sopenharmony_ci		__field(uint32_t, timeout)
44262306a36Sopenharmony_ci		__field(int, err)
44362306a36Sopenharmony_ci	),
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ci	TP_fast_assign(
44662306a36Sopenharmony_ci		strlcpy(__entry->src, sbi->local_src, 128);
44762306a36Sopenharmony_ci		__entry->device_id = device_id;
44862306a36Sopenharmony_ci		__entry->remote_ino = remote_ino;
44962306a36Sopenharmony_ci		__entry->timeout = timeout;
45062306a36Sopenharmony_ci		__entry->err = err;
45162306a36Sopenharmony_ci	),
45262306a36Sopenharmony_ci
45362306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, finish remote fsync file(remote dev_id=%llu,ino=%llu), timeout=%u, err=%d",
45462306a36Sopenharmony_ci		__entry->src, __entry->device_id, __entry->remote_ino,
45562306a36Sopenharmony_ci		__entry->timeout, __entry->err)
45662306a36Sopenharmony_ci);
45762306a36Sopenharmony_ci
45862306a36Sopenharmony_ciTRACE_EVENT(hmdfs_syncfs_enter,
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_sb_info *sbi),
46162306a36Sopenharmony_ci
46262306a36Sopenharmony_ci	TP_ARGS(sbi),
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ci	TP_STRUCT__entry(
46562306a36Sopenharmony_ci		__array(char, src, 128)
46662306a36Sopenharmony_ci	),
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_ci	TP_fast_assign(
46962306a36Sopenharmony_ci		strlcpy(__entry->src, sbi->local_src, 128);
47062306a36Sopenharmony_ci	),
47162306a36Sopenharmony_ci
47262306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, start syncfs", __entry->src)
47362306a36Sopenharmony_ci);
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ciTRACE_EVENT(hmdfs_syncfs_exit,
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_sb_info *sbi, int remain_count,
47862306a36Sopenharmony_ci		 unsigned int timeout, int err),
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci	TP_ARGS(sbi, remain_count, timeout, err),
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci	TP_STRUCT__entry(
48362306a36Sopenharmony_ci		__array(char, src, 128)
48462306a36Sopenharmony_ci		__field(int, remain_count)
48562306a36Sopenharmony_ci		__field(uint32_t, timeout)
48662306a36Sopenharmony_ci		__field(int, err)
48762306a36Sopenharmony_ci	),
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ci	TP_fast_assign(
49062306a36Sopenharmony_ci		strlcpy(__entry->src, sbi->local_src, 128);
49162306a36Sopenharmony_ci		__entry->remain_count = remain_count;
49262306a36Sopenharmony_ci		__entry->timeout = timeout;
49362306a36Sopenharmony_ci		__entry->err = err;
49462306a36Sopenharmony_ci	),
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, finish syncfs(timeout=%u), remain %d remote devices to response, err=%d",
49762306a36Sopenharmony_ci		__entry->src, __entry->timeout,
49862306a36Sopenharmony_ci		__entry->remain_count, __entry->err)
49962306a36Sopenharmony_ci);
50062306a36Sopenharmony_ci
50162306a36Sopenharmony_ciTRACE_EVENT(hmdfs_server_release,
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_peer *con, uint32_t file_id,
50462306a36Sopenharmony_ci		uint64_t file_ver, int err),
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci	TP_ARGS(con, file_id, file_ver, err),
50762306a36Sopenharmony_ci
50862306a36Sopenharmony_ci	TP_STRUCT__entry(
50962306a36Sopenharmony_ci		__array(char, src, 128)
51062306a36Sopenharmony_ci		__field(uint32_t, file_id)
51162306a36Sopenharmony_ci		__field(uint64_t, file_ver)
51262306a36Sopenharmony_ci		__field(uint64_t, device_id)
51362306a36Sopenharmony_ci		__field(int, err)
51462306a36Sopenharmony_ci	),
51562306a36Sopenharmony_ci
51662306a36Sopenharmony_ci	TP_fast_assign(
51762306a36Sopenharmony_ci		strlcpy(__entry->src, con->sbi->local_src, 128);
51862306a36Sopenharmony_ci		__entry->file_id = file_id;
51962306a36Sopenharmony_ci		__entry->file_ver = file_ver;
52062306a36Sopenharmony_ci		__entry->device_id = con->device_id;
52162306a36Sopenharmony_ci		__entry->err = err;
52262306a36Sopenharmony_ci	),
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, server release file, fid=%u, fid_ver=%llu, remote_dev=%llu, err=%d",
52562306a36Sopenharmony_ci		__entry->src, __entry->file_id, __entry->file_ver,
52662306a36Sopenharmony_ci		__entry->device_id, __entry->err)
52762306a36Sopenharmony_ci);
52862306a36Sopenharmony_ci
52962306a36Sopenharmony_ciTRACE_EVENT(hmdfs_readpages_cloud,
53062306a36Sopenharmony_ci
53162306a36Sopenharmony_ci	TP_PROTO(unsigned int nr_pages, int err),
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci	TP_ARGS(nr_pages, err),
53462306a36Sopenharmony_ci
53562306a36Sopenharmony_ci	TP_STRUCT__entry(
53662306a36Sopenharmony_ci		__field(unsigned int, nr_pages)
53762306a36Sopenharmony_ci		__field(int, err)
53862306a36Sopenharmony_ci	),
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_ci	TP_fast_assign(
54162306a36Sopenharmony_ci		__entry->nr_pages = nr_pages;
54262306a36Sopenharmony_ci		__entry->err = err;
54362306a36Sopenharmony_ci	),
54462306a36Sopenharmony_ci
54562306a36Sopenharmony_ci	TP_printk("nr_pages:%u, lo_d_devid:%d",
54662306a36Sopenharmony_ci		  __entry->nr_pages, __entry->err)
54762306a36Sopenharmony_ci);
54862306a36Sopenharmony_ci
54962306a36Sopenharmony_ciTRACE_EVENT(hmdfs_do_readpages_cloud_begin,
55062306a36Sopenharmony_ci
55162306a36Sopenharmony_ci	TP_PROTO(int cnt, loff_t pos),
55262306a36Sopenharmony_ci
55362306a36Sopenharmony_ci	TP_ARGS(cnt, pos),
55462306a36Sopenharmony_ci
55562306a36Sopenharmony_ci	TP_STRUCT__entry(
55662306a36Sopenharmony_ci		__field(int, cnt)
55762306a36Sopenharmony_ci		__field(loff_t, pos)
55862306a36Sopenharmony_ci	),
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_ci	TP_fast_assign(
56162306a36Sopenharmony_ci		__entry->cnt = cnt;
56262306a36Sopenharmony_ci		__entry->pos = pos;
56362306a36Sopenharmony_ci	),
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci	TP_printk("cnt:%d, pos:%llx",
56662306a36Sopenharmony_ci		  __entry->cnt, __entry->pos)
56762306a36Sopenharmony_ci);
56862306a36Sopenharmony_ci
56962306a36Sopenharmony_ciTRACE_EVENT(hmdfs_do_readpages_cloud_end,
57062306a36Sopenharmony_ci
57162306a36Sopenharmony_ci	TP_PROTO(int cnt, loff_t pos, int ret),
57262306a36Sopenharmony_ci
57362306a36Sopenharmony_ci	TP_ARGS(cnt, pos, ret),
57462306a36Sopenharmony_ci
57562306a36Sopenharmony_ci	TP_STRUCT__entry(
57662306a36Sopenharmony_ci		__field(int, cnt)
57762306a36Sopenharmony_ci		__field(loff_t, pos)
57862306a36Sopenharmony_ci		__field(int, ret)
57962306a36Sopenharmony_ci	),
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_ci	TP_fast_assign(
58262306a36Sopenharmony_ci		__entry->cnt = cnt;
58362306a36Sopenharmony_ci		__entry->pos = pos;
58462306a36Sopenharmony_ci		__entry->ret = ret;
58562306a36Sopenharmony_ci	),
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ci	TP_printk("cnt:%d, pos:%llx",
58862306a36Sopenharmony_ci		  __entry->cnt, __entry->pos, __entry->ret)
58962306a36Sopenharmony_ci);
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_ciTRACE_EVENT(hmdfs_client_recv_readpage,
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_peer *con, unsigned long long remote_ino,
59462306a36Sopenharmony_ci		unsigned long page_index, int err),
59562306a36Sopenharmony_ci
59662306a36Sopenharmony_ci	TP_ARGS(con, remote_ino, page_index, err),
59762306a36Sopenharmony_ci
59862306a36Sopenharmony_ci	TP_STRUCT__entry(
59962306a36Sopenharmony_ci		__array(char, src, 128)
60062306a36Sopenharmony_ci		__field(uint64_t, remote_ino)
60162306a36Sopenharmony_ci		__field(unsigned long, page_index)
60262306a36Sopenharmony_ci		__field(uint64_t, device_id)
60362306a36Sopenharmony_ci		__field(int, err)
60462306a36Sopenharmony_ci	),
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_ci	TP_fast_assign(
60762306a36Sopenharmony_ci		strlcpy(__entry->src, con->sbi->local_src, 128);
60862306a36Sopenharmony_ci		__entry->remote_ino = remote_ino;
60962306a36Sopenharmony_ci		__entry->page_index = page_index;
61062306a36Sopenharmony_ci		__entry->device_id = con->device_id;
61162306a36Sopenharmony_ci		__entry->err = err;
61262306a36Sopenharmony_ci	),
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, client readpage callback from remote device %llu, remote_ino=%llu, page_idx=%lu, err=%d",
61562306a36Sopenharmony_ci		__entry->src, __entry->device_id,
61662306a36Sopenharmony_ci		__entry->remote_ino, __entry->page_index, __entry->err)
61762306a36Sopenharmony_ci);
61862306a36Sopenharmony_ci
61962306a36Sopenharmony_ciTRACE_EVENT(hmdfs_writepage_cb_enter,
62062306a36Sopenharmony_ci
62162306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_peer *con, unsigned long long remote_ino,
62262306a36Sopenharmony_ci		unsigned long page_index, int err),
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_ci	TP_ARGS(con, remote_ino, page_index, err),
62562306a36Sopenharmony_ci
62662306a36Sopenharmony_ci	TP_STRUCT__entry(
62762306a36Sopenharmony_ci		__array(char, src, 128)
62862306a36Sopenharmony_ci		__field(uint64_t, remote_ino)
62962306a36Sopenharmony_ci		__field(unsigned long, page_index)
63062306a36Sopenharmony_ci		__field(uint64_t, device_id)
63162306a36Sopenharmony_ci		__field(int, err)
63262306a36Sopenharmony_ci	),
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci	TP_fast_assign(
63562306a36Sopenharmony_ci		strlcpy(__entry->src, con->sbi->local_src, 128);
63662306a36Sopenharmony_ci		__entry->remote_ino = remote_ino;
63762306a36Sopenharmony_ci		__entry->page_index = page_index;
63862306a36Sopenharmony_ci		__entry->device_id = con->device_id;
63962306a36Sopenharmony_ci		__entry->err = err;
64062306a36Sopenharmony_ci	),
64162306a36Sopenharmony_ci
64262306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, writepage_cb start, return from remote device %llu, remote_ino=%llu, page_idx=%lu, err=%d",
64362306a36Sopenharmony_ci		__entry->src, __entry->device_id,
64462306a36Sopenharmony_ci		__entry->remote_ino, __entry->page_index, __entry->err)
64562306a36Sopenharmony_ci);
64662306a36Sopenharmony_ci
64762306a36Sopenharmony_ciTRACE_EVENT(hmdfs_writepage_cb_exit,
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_peer *con, unsigned long long remote_ino,
65062306a36Sopenharmony_ci		unsigned long page_index, int err),
65162306a36Sopenharmony_ci
65262306a36Sopenharmony_ci	TP_ARGS(con, remote_ino, page_index, err),
65362306a36Sopenharmony_ci
65462306a36Sopenharmony_ci	TP_STRUCT__entry(
65562306a36Sopenharmony_ci		__array(char, src, 128)
65662306a36Sopenharmony_ci		__field(uint64_t, remote_ino)
65762306a36Sopenharmony_ci		__field(unsigned long, page_index)
65862306a36Sopenharmony_ci		__field(uint64_t, device_id)
65962306a36Sopenharmony_ci		__field(int, err)
66062306a36Sopenharmony_ci	),
66162306a36Sopenharmony_ci
66262306a36Sopenharmony_ci	TP_fast_assign(
66362306a36Sopenharmony_ci		strlcpy(__entry->src, con->sbi->local_src, 128);
66462306a36Sopenharmony_ci		__entry->remote_ino = remote_ino;
66562306a36Sopenharmony_ci		__entry->page_index = page_index;
66662306a36Sopenharmony_ci		__entry->device_id = con->device_id;
66762306a36Sopenharmony_ci		__entry->err = err;
66862306a36Sopenharmony_ci	),
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_ci	TP_printk("hmdfs: src %s, writepage_cb exit, return from remote device %llu, remote_ino=%llu, page_index=%lu, err=%d",
67162306a36Sopenharmony_ci		__entry->src, __entry->device_id,
67262306a36Sopenharmony_ci		__entry->remote_ino, __entry->page_index, __entry->err)
67362306a36Sopenharmony_ci);
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_ciTRACE_EVENT(hmdfs_server_rebuild_dents,
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_dcache_header *__h, int err),
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ci	TP_ARGS(__h, err),
68062306a36Sopenharmony_ci
68162306a36Sopenharmony_ci	TP_STRUCT__entry(
68262306a36Sopenharmony_ci		__field(uint64_t, crtime)
68362306a36Sopenharmony_ci		__field(uint64_t, crtime_nsec)
68462306a36Sopenharmony_ci		__field(uint64_t, ctime)
68562306a36Sopenharmony_ci		__field(uint64_t, ctime_nsec)
68662306a36Sopenharmony_ci		__field(uint64_t, num)
68762306a36Sopenharmony_ci		__field(int, err)
68862306a36Sopenharmony_ci	),
68962306a36Sopenharmony_ci
69062306a36Sopenharmony_ci	TP_fast_assign(
69162306a36Sopenharmony_ci		__entry->crtime = le64_to_cpu(__h->dcache_crtime);
69262306a36Sopenharmony_ci		__entry->crtime_nsec = le64_to_cpu(__h->dcache_crtime_nsec);
69362306a36Sopenharmony_ci		__entry->ctime = le64_to_cpu(__h->dentry_ctime);
69462306a36Sopenharmony_ci		__entry->ctime_nsec = le64_to_cpu(__h->dentry_ctime_nsec);
69562306a36Sopenharmony_ci		__entry->num = le64_to_cpu(__h->num);
69662306a36Sopenharmony_ci		__entry->err = err;
69762306a36Sopenharmony_ci	),
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_ci	TP_printk("dcache crtime %llu:%llu ctime %llu:%llu has %llu dentry err %d",
70062306a36Sopenharmony_ci		__entry->crtime, __entry->crtime_nsec, __entry->ctime,
70162306a36Sopenharmony_ci		__entry->ctime_nsec, __entry->num, __entry->err)
70262306a36Sopenharmony_ci);
70362306a36Sopenharmony_ci
70462306a36Sopenharmony_ciTRACE_EVENT(hmdfs_server_readdir,
70562306a36Sopenharmony_ci
70662306a36Sopenharmony_ci	TP_PROTO(struct readdir_request *req),
70762306a36Sopenharmony_ci
70862306a36Sopenharmony_ci	TP_ARGS(req),
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_ci	TP_STRUCT__entry(
71162306a36Sopenharmony_ci		__string(path, req->path)
71262306a36Sopenharmony_ci	),
71362306a36Sopenharmony_ci
71462306a36Sopenharmony_ci	TP_fast_assign(
71562306a36Sopenharmony_ci		__assign_str(path, req->path);
71662306a36Sopenharmony_ci	),
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ci	TP_printk("hmdfs_server_readdir %s", __get_str(path))
71962306a36Sopenharmony_ci);
72062306a36Sopenharmony_ci
72162306a36Sopenharmony_ciTRACE_EVENT(hmdfs_open_final_remote,
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_inode_info *info,
72462306a36Sopenharmony_ci		 struct hmdfs_open_ret *open_ret,
72562306a36Sopenharmony_ci		 struct file *file,
72662306a36Sopenharmony_ci		 int reason),
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci	TP_ARGS(info, open_ret, file, reason),
72962306a36Sopenharmony_ci
73062306a36Sopenharmony_ci	TP_STRUCT__entry(
73162306a36Sopenharmony_ci		__array(char, file_path, MAX_FILTER_STR_VAL)
73262306a36Sopenharmony_ci		__field(uint32_t, reason)
73362306a36Sopenharmony_ci		__field(uint32_t, file_id)
73462306a36Sopenharmony_ci		__field(uint64_t, file_ver)
73562306a36Sopenharmony_ci		__field(uint64_t, remote_file_size)
73662306a36Sopenharmony_ci		__field(uint64_t, remote_ino)
73762306a36Sopenharmony_ci		__field(uint64_t, remote_ctime)
73862306a36Sopenharmony_ci		__field(uint64_t, remote_ctime_nsec)
73962306a36Sopenharmony_ci		__field(uint64_t, remote_stable_ctime)
74062306a36Sopenharmony_ci		__field(uint64_t, remote_stable_ctime_nsec)
74162306a36Sopenharmony_ci		__field(uint64_t, local_file_size)
74262306a36Sopenharmony_ci		__field(uint64_t, local_ino)
74362306a36Sopenharmony_ci		__field(uint64_t, local_ctime)
74462306a36Sopenharmony_ci		__field(uint64_t, local_ctime_nsec)
74562306a36Sopenharmony_ci		__field(uint64_t, local_stable_ctime)
74662306a36Sopenharmony_ci		__field(uint64_t, local_stable_ctime_nsec)
74762306a36Sopenharmony_ci	),
74862306a36Sopenharmony_ci
74962306a36Sopenharmony_ci	TP_fast_assign(
75062306a36Sopenharmony_ci		strlcpy(__entry->file_path, file->f_path.dentry->d_name.name,
75162306a36Sopenharmony_ci			MAX_FILTER_STR_VAL);
75262306a36Sopenharmony_ci		__entry->reason = reason;
75362306a36Sopenharmony_ci		__entry->file_id = open_ret->fid.id;
75462306a36Sopenharmony_ci		__entry->file_ver = open_ret->fid.ver;
75562306a36Sopenharmony_ci		__entry->remote_file_size = open_ret->file_size;
75662306a36Sopenharmony_ci		__entry->remote_ino = open_ret->ino;
75762306a36Sopenharmony_ci		__entry->remote_ctime = open_ret->remote_ctime.tv_sec;
75862306a36Sopenharmony_ci		__entry->remote_ctime_nsec = open_ret->remote_ctime.tv_nsec;
75962306a36Sopenharmony_ci		__entry->remote_stable_ctime = open_ret->stable_ctime.tv_sec;
76062306a36Sopenharmony_ci		__entry->remote_stable_ctime_nsec =
76162306a36Sopenharmony_ci					open_ret->stable_ctime.tv_nsec;
76262306a36Sopenharmony_ci		__entry->local_file_size = info->vfs_inode.i_size;
76362306a36Sopenharmony_ci		__entry->local_ino = info->remote_ino;
76462306a36Sopenharmony_ci		__entry->local_ctime = info->remote_ctime.tv_sec;
76562306a36Sopenharmony_ci		__entry->local_ctime_nsec = info->remote_ctime.tv_nsec;
76662306a36Sopenharmony_ci		__entry->local_stable_ctime = info->stable_ctime.tv_sec;
76762306a36Sopenharmony_ci		__entry->local_stable_ctime_nsec = info->stable_ctime.tv_nsec;
76862306a36Sopenharmony_ci	),
76962306a36Sopenharmony_ci
77062306a36Sopenharmony_ci	TP_printk("file path: %s, file id: %u, file ver: %llu, reason: %d, file size: %llu/%llu, ino: %llu/%llu, ctime: %llu.%llu/%llu.%llu, stable_ctime: %llu.%llu/%llu.%llu from remote/local",
77162306a36Sopenharmony_ci		  __entry->file_path, __entry->file_id, __entry->file_ver,
77262306a36Sopenharmony_ci		  __entry->reason, __entry->remote_file_size,
77362306a36Sopenharmony_ci		  __entry->local_file_size, __entry->remote_ino,
77462306a36Sopenharmony_ci		  __entry->local_ino, __entry->remote_ctime,
77562306a36Sopenharmony_ci		  __entry->remote_ctime_nsec, __entry->local_ctime,
77662306a36Sopenharmony_ci		  __entry->local_ctime_nsec, __entry->remote_stable_ctime,
77762306a36Sopenharmony_ci		  __entry->remote_stable_ctime_nsec,
77862306a36Sopenharmony_ci		  __entry->local_stable_ctime, __entry->local_stable_ctime_nsec)
77962306a36Sopenharmony_ci);
78062306a36Sopenharmony_ci
78162306a36Sopenharmony_ciTRACE_EVENT(hmdfs_server_open_enter,
78262306a36Sopenharmony_ci
78362306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_peer *con,
78462306a36Sopenharmony_ci		 struct open_request *recv),
78562306a36Sopenharmony_ci
78662306a36Sopenharmony_ci	TP_ARGS(con, recv),
78762306a36Sopenharmony_ci
78862306a36Sopenharmony_ci	TP_STRUCT__entry(
78962306a36Sopenharmony_ci		__array(char, open_path, MAX_FILTER_STR_VAL)
79062306a36Sopenharmony_ci		__array(char, dst_path, MAX_FILTER_STR_VAL)
79162306a36Sopenharmony_ci		__field(uint32_t, file_type)
79262306a36Sopenharmony_ci	),
79362306a36Sopenharmony_ci
79462306a36Sopenharmony_ci	TP_fast_assign(
79562306a36Sopenharmony_ci		strlcpy(__entry->open_path, recv->buf, MAX_FILTER_STR_VAL);
79662306a36Sopenharmony_ci		strlcpy(__entry->dst_path, con->sbi->local_dst,
79762306a36Sopenharmony_ci			MAX_FILTER_STR_VAL);
79862306a36Sopenharmony_ci		__entry->file_type = recv->file_type;
79962306a36Sopenharmony_ci	),
80062306a36Sopenharmony_ci
80162306a36Sopenharmony_ci	TP_printk("server open file %s from %s, file_type is %u",
80262306a36Sopenharmony_ci		  __entry->open_path, __entry->dst_path,
80362306a36Sopenharmony_ci		  __entry->file_type)
80462306a36Sopenharmony_ci);
80562306a36Sopenharmony_ci
80662306a36Sopenharmony_ciTRACE_EVENT(hmdfs_server_open_exit,
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_ci	TP_PROTO(struct hmdfs_peer *con,
80962306a36Sopenharmony_ci		 struct open_response *resp,
81062306a36Sopenharmony_ci		 struct file *file,
81162306a36Sopenharmony_ci		 int ret),
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_ci	TP_ARGS(con, resp, file, ret),
81462306a36Sopenharmony_ci
81562306a36Sopenharmony_ci	TP_STRUCT__entry(
81662306a36Sopenharmony_ci		__array(char, file_path, MAX_FILTER_STR_VAL)
81762306a36Sopenharmony_ci		__array(char, src_path, MAX_FILTER_STR_VAL)
81862306a36Sopenharmony_ci		__field(uint32_t, file_id)
81962306a36Sopenharmony_ci		__field(uint64_t, file_size)
82062306a36Sopenharmony_ci		__field(uint64_t, ino)
82162306a36Sopenharmony_ci		__field(uint64_t, ctime)
82262306a36Sopenharmony_ci		__field(uint64_t, ctime_nsec)
82362306a36Sopenharmony_ci		__field(uint64_t, stable_ctime)
82462306a36Sopenharmony_ci		__field(uint64_t, stable_ctime_nsec)
82562306a36Sopenharmony_ci		__field(int, retval)
82662306a36Sopenharmony_ci	),
82762306a36Sopenharmony_ci
82862306a36Sopenharmony_ci	TP_fast_assign(
82962306a36Sopenharmony_ci		if (file)
83062306a36Sopenharmony_ci			strlcpy(__entry->file_path,
83162306a36Sopenharmony_ci				file->f_path.dentry->d_name.name,
83262306a36Sopenharmony_ci				MAX_FILTER_STR_VAL);
83362306a36Sopenharmony_ci		else
83462306a36Sopenharmony_ci			strlcpy(__entry->file_path, "null", MAX_FILTER_STR_VAL);
83562306a36Sopenharmony_ci		strlcpy(__entry->src_path, con->sbi->local_src,
83662306a36Sopenharmony_ci			MAX_FILTER_STR_VAL);
83762306a36Sopenharmony_ci		__entry->file_id = resp ? resp->file_id : UINT_MAX;
83862306a36Sopenharmony_ci		__entry->file_size = resp ? resp->file_size : ULLONG_MAX;
83962306a36Sopenharmony_ci		__entry->ino = resp ? resp->ino : 0;
84062306a36Sopenharmony_ci		__entry->ctime = resp ? resp->ctime : 0;
84162306a36Sopenharmony_ci		__entry->ctime_nsec = resp ? resp->ctime_nsec : 0;
84262306a36Sopenharmony_ci		__entry->stable_ctime = resp ? resp->stable_ctime : 0;
84362306a36Sopenharmony_ci		__entry->stable_ctime_nsec = resp ? resp->stable_ctime_nsec : 0;
84462306a36Sopenharmony_ci		__entry->retval = ret;
84562306a36Sopenharmony_ci	),
84662306a36Sopenharmony_ci
84762306a36Sopenharmony_ci	TP_printk("server file %s is opened from %s, open result: %d, file id: %u, file size: %llu, ino: %llu, ctime: %llu.%llu, stable ctime: %llu.%llu",
84862306a36Sopenharmony_ci		  __entry->file_path, __entry->src_path,
84962306a36Sopenharmony_ci		  __entry->retval, __entry->file_id,
85062306a36Sopenharmony_ci		  __entry->file_size, __entry->ino, __entry->ctime,
85162306a36Sopenharmony_ci		  __entry->ctime_nsec, __entry->stable_ctime,
85262306a36Sopenharmony_ci		  __entry->stable_ctime_nsec)
85362306a36Sopenharmony_ci);
85462306a36Sopenharmony_ci
85562306a36Sopenharmony_ciTRACE_EVENT(hmdfs_merge_lookup_work_enter,
85662306a36Sopenharmony_ci
85762306a36Sopenharmony_ci	TP_PROTO(struct merge_lookup_work *ml_work),
85862306a36Sopenharmony_ci
85962306a36Sopenharmony_ci	TP_ARGS(ml_work),
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_ci	TP_STRUCT__entry(
86262306a36Sopenharmony_ci		__field(int, 		devid)
86362306a36Sopenharmony_ci		__string(name, 		ml_work->name)
86462306a36Sopenharmony_ci		__field(unsigned int, 	flags)
86562306a36Sopenharmony_ci	),
86662306a36Sopenharmony_ci
86762306a36Sopenharmony_ci	TP_fast_assign(
86862306a36Sopenharmony_ci		__entry->devid 	= ml_work->devid;
86962306a36Sopenharmony_ci		__assign_str(name, ml_work->name);
87062306a36Sopenharmony_ci		__entry->flags 	= ml_work->flags;
87162306a36Sopenharmony_ci	),
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_ci	TP_printk("devid = %d, name:%s, flags:%u",
87462306a36Sopenharmony_ci		__entry->devid,
87562306a36Sopenharmony_ci		__get_str(name),
87662306a36Sopenharmony_ci		__entry->flags)
87762306a36Sopenharmony_ci);
87862306a36Sopenharmony_ci
87962306a36Sopenharmony_ciTRACE_EVENT(hmdfs_merge_lookup_work_exit,
88062306a36Sopenharmony_ci
88162306a36Sopenharmony_ci	TP_PROTO(struct merge_lookup_work *ml_work, int found),
88262306a36Sopenharmony_ci
88362306a36Sopenharmony_ci	TP_ARGS(ml_work, found),
88462306a36Sopenharmony_ci
88562306a36Sopenharmony_ci	TP_STRUCT__entry(
88662306a36Sopenharmony_ci		__field(int, 		devid)
88762306a36Sopenharmony_ci		__string(name, 		ml_work->name)
88862306a36Sopenharmony_ci		__field(unsigned int, 	flags)
88962306a36Sopenharmony_ci		__field(int, 		found)
89062306a36Sopenharmony_ci	),
89162306a36Sopenharmony_ci
89262306a36Sopenharmony_ci	TP_fast_assign(
89362306a36Sopenharmony_ci		__entry->devid 	= ml_work->devid;
89462306a36Sopenharmony_ci		__assign_str(name, ml_work->name);
89562306a36Sopenharmony_ci		__entry->flags 	= ml_work->flags;
89662306a36Sopenharmony_ci		__entry->found 	= found;
89762306a36Sopenharmony_ci	),
89862306a36Sopenharmony_ci
89962306a36Sopenharmony_ci	TP_printk("devid = %d, name:%s, flags:%u, found:%d",
90062306a36Sopenharmony_ci		__entry->devid,
90162306a36Sopenharmony_ci		__get_str(name),
90262306a36Sopenharmony_ci		__entry->flags,
90362306a36Sopenharmony_ci		__entry->found)
90462306a36Sopenharmony_ci);
90562306a36Sopenharmony_ci
90662306a36Sopenharmony_ciTRACE_EVENT(hmdfs_merge_update_dentry_info_enter,
90762306a36Sopenharmony_ci
90862306a36Sopenharmony_ci	TP_PROTO(struct dentry *src_dentry, struct dentry *dst_dentry),
90962306a36Sopenharmony_ci
91062306a36Sopenharmony_ci	TP_ARGS(src_dentry, dst_dentry),
91162306a36Sopenharmony_ci
91262306a36Sopenharmony_ci	TP_STRUCT__entry(
91362306a36Sopenharmony_ci		__string(src_name,	src_dentry->d_name.name)
91462306a36Sopenharmony_ci		__string(dst_name,	dst_dentry->d_name.name)
91562306a36Sopenharmony_ci	),
91662306a36Sopenharmony_ci
91762306a36Sopenharmony_ci	TP_fast_assign(
91862306a36Sopenharmony_ci		__assign_str(src_name, src_dentry->d_name.name);
91962306a36Sopenharmony_ci		__assign_str(dst_name, dst_dentry->d_name.name);
92062306a36Sopenharmony_ci	),
92162306a36Sopenharmony_ci
92262306a36Sopenharmony_ci	TP_printk("src name:%s, dst name:%s",
92362306a36Sopenharmony_ci		__get_str(src_name),
92462306a36Sopenharmony_ci		__get_str(dst_name))
92562306a36Sopenharmony_ci);
92662306a36Sopenharmony_ci
92762306a36Sopenharmony_ciTRACE_EVENT(hmdfs_merge_update_dentry_info_exit,
92862306a36Sopenharmony_ci
92962306a36Sopenharmony_ci	TP_PROTO(struct dentry *src_dentry, struct dentry *dst_dentry),
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_ci	TP_ARGS(src_dentry, dst_dentry),
93262306a36Sopenharmony_ci
93362306a36Sopenharmony_ci	TP_STRUCT__entry(
93462306a36Sopenharmony_ci		__string(src_name,	src_dentry->d_name.name)
93562306a36Sopenharmony_ci		__string(dst_name,	dst_dentry->d_name.name)
93662306a36Sopenharmony_ci	),
93762306a36Sopenharmony_ci
93862306a36Sopenharmony_ci	TP_fast_assign(
93962306a36Sopenharmony_ci		__assign_str(src_name, src_dentry->d_name.name);
94062306a36Sopenharmony_ci		__assign_str(dst_name, dst_dentry->d_name.name);
94162306a36Sopenharmony_ci	),
94262306a36Sopenharmony_ci
94362306a36Sopenharmony_ci	TP_printk("src name:%s, dst name:%s",
94462306a36Sopenharmony_ci		__get_str(src_name),
94562306a36Sopenharmony_ci		__get_str(dst_name))
94662306a36Sopenharmony_ci);
94762306a36Sopenharmony_ci
94862306a36Sopenharmony_ci#endif
94962306a36Sopenharmony_ci
95062306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
95162306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
95262306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
95362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE hmdfs_trace
95462306a36Sopenharmony_ci#include <trace/define_trace.h>
955