Merge tag 'afs-next-20190628' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
Pull afs updates from David Howells: "A set of minor changes for AFS: - Remove an unnecessary check in afs_unlink() - Add a tracepoint for tracking callback management - Add a tracepoint for afs_server object usage - Use struct_size() - Add mappings for AFS UAE abort codes to Linux error codes, using symbolic names rather than hex numbers in the .c file" * tag 'afs-next-20190628' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs: afs: Add support for the UAE error table fs/afs: use struct_size() in kzalloc() afs: Trace afs_server usage afs: Add some callback management tracepoints afs: afs_unlink() doesn't need to check dentry->d_inode
This commit is contained in:
@@ -27,6 +27,26 @@ enum afs_call_trace {
|
||||
afs_call_trace_work,
|
||||
};
|
||||
|
||||
enum afs_server_trace {
|
||||
afs_server_trace_alloc,
|
||||
afs_server_trace_callback,
|
||||
afs_server_trace_destroy,
|
||||
afs_server_trace_free,
|
||||
afs_server_trace_gc,
|
||||
afs_server_trace_get_by_uuid,
|
||||
afs_server_trace_get_caps,
|
||||
afs_server_trace_get_install,
|
||||
afs_server_trace_get_new_cbi,
|
||||
afs_server_trace_give_up_cb,
|
||||
afs_server_trace_put_call,
|
||||
afs_server_trace_put_cbi,
|
||||
afs_server_trace_put_find_rsq,
|
||||
afs_server_trace_put_slist,
|
||||
afs_server_trace_put_slist_isort,
|
||||
afs_server_trace_put_uuid_rsq,
|
||||
afs_server_trace_update,
|
||||
};
|
||||
|
||||
enum afs_fs_operation {
|
||||
afs_FS_FetchData = 130, /* AFS Fetch file data */
|
||||
afs_FS_FetchACL = 131, /* AFS Fetch file ACL */
|
||||
@@ -191,6 +211,17 @@ enum afs_flock_operation {
|
||||
afs_flock_op_wake,
|
||||
};
|
||||
|
||||
enum afs_cb_break_reason {
|
||||
afs_cb_break_no_break,
|
||||
afs_cb_break_for_callback,
|
||||
afs_cb_break_for_deleted,
|
||||
afs_cb_break_for_lapsed,
|
||||
afs_cb_break_for_unlink,
|
||||
afs_cb_break_for_vsbreak,
|
||||
afs_cb_break_for_volume_callback,
|
||||
afs_cb_break_for_zap,
|
||||
};
|
||||
|
||||
#endif /* end __AFS_DECLARE_TRACE_ENUMS_ONCE_ONLY */
|
||||
|
||||
/*
|
||||
@@ -204,6 +235,25 @@ enum afs_flock_operation {
|
||||
EM(afs_call_trace_wake, "WAKE ") \
|
||||
E_(afs_call_trace_work, "WORK ")
|
||||
|
||||
#define afs_server_traces \
|
||||
EM(afs_server_trace_alloc, "ALLOC ") \
|
||||
EM(afs_server_trace_callback, "CALLBACK ") \
|
||||
EM(afs_server_trace_destroy, "DESTROY ") \
|
||||
EM(afs_server_trace_free, "FREE ") \
|
||||
EM(afs_server_trace_gc, "GC ") \
|
||||
EM(afs_server_trace_get_by_uuid, "GET uuid ") \
|
||||
EM(afs_server_trace_get_caps, "GET caps ") \
|
||||
EM(afs_server_trace_get_install, "GET inst ") \
|
||||
EM(afs_server_trace_get_new_cbi, "GET cbi ") \
|
||||
EM(afs_server_trace_give_up_cb, "giveup-cb") \
|
||||
EM(afs_server_trace_put_call, "PUT call ") \
|
||||
EM(afs_server_trace_put_cbi, "PUT cbi ") \
|
||||
EM(afs_server_trace_put_find_rsq, "PUT f-rsq") \
|
||||
EM(afs_server_trace_put_slist, "PUT slist") \
|
||||
EM(afs_server_trace_put_slist_isort, "PUT isort") \
|
||||
EM(afs_server_trace_put_uuid_rsq, "PUT u-req") \
|
||||
E_(afs_server_trace_update, "UPDATE")
|
||||
|
||||
#define afs_fs_operations \
|
||||
EM(afs_FS_FetchData, "FS.FetchData") \
|
||||
EM(afs_FS_FetchStatus, "FS.FetchStatus") \
|
||||
@@ -370,6 +420,16 @@ enum afs_flock_operation {
|
||||
EM(afs_flock_op_unlock, "UNLOCK ") \
|
||||
E_(afs_flock_op_wake, "WAKE ")
|
||||
|
||||
#define afs_cb_break_reasons \
|
||||
EM(afs_cb_break_no_break, "no-break") \
|
||||
EM(afs_cb_break_for_callback, "break-cb") \
|
||||
EM(afs_cb_break_for_deleted, "break-del") \
|
||||
EM(afs_cb_break_for_lapsed, "break-lapsed") \
|
||||
EM(afs_cb_break_for_unlink, "break-unlink") \
|
||||
EM(afs_cb_break_for_vsbreak, "break-vs") \
|
||||
EM(afs_cb_break_for_volume_callback, "break-v-cb") \
|
||||
E_(afs_cb_break_for_zap, "break-zap")
|
||||
|
||||
/*
|
||||
* Export enum symbols via userspace.
|
||||
*/
|
||||
@@ -379,6 +439,7 @@ enum afs_flock_operation {
|
||||
#define E_(a, b) TRACE_DEFINE_ENUM(a);
|
||||
|
||||
afs_call_traces;
|
||||
afs_server_traces;
|
||||
afs_fs_operations;
|
||||
afs_vl_operations;
|
||||
afs_edit_dir_ops;
|
||||
@@ -388,6 +449,7 @@ afs_io_errors;
|
||||
afs_file_errors;
|
||||
afs_flock_types;
|
||||
afs_flock_operations;
|
||||
afs_cb_break_reasons;
|
||||
|
||||
/*
|
||||
* Now redefine the EM() and E_() macros to map the enums to the strings that
|
||||
@@ -1167,6 +1229,76 @@ TRACE_EVENT(afs_get_tree,
|
||||
__entry->cell, __entry->volume, __entry->vid)
|
||||
);
|
||||
|
||||
TRACE_EVENT(afs_cb_break,
|
||||
TP_PROTO(struct afs_fid *fid, unsigned int cb_break,
|
||||
enum afs_cb_break_reason reason, bool skipped),
|
||||
|
||||
TP_ARGS(fid, cb_break, reason, skipped),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field_struct(struct afs_fid, fid )
|
||||
__field(unsigned int, cb_break )
|
||||
__field(enum afs_cb_break_reason, reason )
|
||||
__field(bool, skipped )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->fid = *fid;
|
||||
__entry->cb_break = cb_break;
|
||||
__entry->reason = reason;
|
||||
__entry->skipped = skipped;
|
||||
),
|
||||
|
||||
TP_printk("%llx:%llx:%x b=%x s=%u %s",
|
||||
__entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
|
||||
__entry->cb_break,
|
||||
__entry->skipped,
|
||||
__print_symbolic(__entry->reason, afs_cb_break_reasons))
|
||||
);
|
||||
|
||||
TRACE_EVENT(afs_cb_miss,
|
||||
TP_PROTO(struct afs_fid *fid, enum afs_cb_break_reason reason),
|
||||
|
||||
TP_ARGS(fid, reason),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field_struct(struct afs_fid, fid )
|
||||
__field(enum afs_cb_break_reason, reason )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->fid = *fid;
|
||||
__entry->reason = reason;
|
||||
),
|
||||
|
||||
TP_printk(" %llx:%llx:%x %s",
|
||||
__entry->fid.vid, __entry->fid.vnode, __entry->fid.unique,
|
||||
__print_symbolic(__entry->reason, afs_cb_break_reasons))
|
||||
);
|
||||
|
||||
TRACE_EVENT(afs_server,
|
||||
TP_PROTO(struct afs_server *server, int usage, enum afs_server_trace reason),
|
||||
|
||||
TP_ARGS(server, usage, reason),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, server )
|
||||
__field(int, usage )
|
||||
__field(int, reason )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->server = server->debug_id;
|
||||
__entry->usage = usage;
|
||||
__entry->reason = reason;
|
||||
),
|
||||
|
||||
TP_printk("s=%08x %s u=%d",
|
||||
__entry->server,
|
||||
__print_symbolic(__entry->reason, afs_server_traces),
|
||||
__entry->usage)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_AFS_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
Reference in New Issue
Block a user