mirror of
https://github.com/versity/scoutfs.git
synced 2026-09-04 23:27:05 +00:00
scoutfs: add manifest and item tracing
Add some tracing to get visibility into compaction and item reading. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
+2
-3
@@ -666,9 +666,8 @@ static void scoutfs_compact_func(struct work_struct *work)
|
||||
|
||||
/* trace compaction ranges */
|
||||
list_for_each_entry(cseg, &curs.csegs, entry) {
|
||||
SK_TRACE_PRINTK("level %u segno %llu first "SK_FMT" last "SK_FMT"\n",
|
||||
cseg->level, cseg->segno, SK_ARG(cseg->first),
|
||||
SK_ARG(cseg->last));
|
||||
trace_scoutfs_compact_input(sb, cseg->level, cseg->segno,
|
||||
cseg->seq, cseg->first, cseg->last);
|
||||
}
|
||||
|
||||
if (ret == 0 && !list_empty(&curs.csegs)) {
|
||||
|
||||
+15
-3
@@ -130,7 +130,7 @@ int scoutfs_manifest_add(struct super_block *sb,
|
||||
unsigned key_bytes;
|
||||
unsigned bytes;
|
||||
|
||||
trace_scoutfs_manifest_add(sb, first, last, segno, seq, level);
|
||||
trace_scoutfs_manifest_add(sb, level, segno, seq, first, last);
|
||||
|
||||
key_bytes = first->key_len + last->key_len;
|
||||
bytes = offsetof(struct scoutfs_manifest_entry, keys[key_bytes]);
|
||||
@@ -173,11 +173,14 @@ int scoutfs_manifest_add_ment(struct super_block *sb,
|
||||
struct scoutfs_manifest_entry *ment;
|
||||
struct manifest_search_key skey;
|
||||
struct scoutfs_key_buf first;
|
||||
struct scoutfs_key_buf last;
|
||||
unsigned bytes;
|
||||
|
||||
lockdep_assert_held(&mani->rwsem);
|
||||
|
||||
init_ment_keys(add, &first, NULL);
|
||||
init_ment_keys(add, &first, &last);
|
||||
trace_scoutfs_manifest_add(sb, add->level, le64_to_cpu(add->segno),
|
||||
le64_to_cpu(add->seq), &first, &last);
|
||||
|
||||
skey.key = &first;
|
||||
skey.level = add->level;
|
||||
@@ -230,6 +233,7 @@ int scoutfs_manifest_del(struct super_block *sb, struct scoutfs_key_buf *first,
|
||||
struct scoutfs_super_block *super = &sbi->super;
|
||||
struct scoutfs_manifest_entry *ment;
|
||||
struct manifest_search_key skey;
|
||||
struct scoutfs_key_buf last;
|
||||
|
||||
skey.key = first;
|
||||
skey.level = level;
|
||||
@@ -239,6 +243,10 @@ int scoutfs_manifest_del(struct super_block *sb, struct scoutfs_key_buf *first,
|
||||
if (!ment)
|
||||
return -ENOENT;
|
||||
|
||||
init_ment_keys(ment, NULL, &last);
|
||||
trace_scoutfs_manifest_delete(sb, ment->level, le64_to_cpu(ment->segno),
|
||||
le64_to_cpu(ment->seq), first, &last);
|
||||
|
||||
scoutfs_ring_delete(&mani->ring, ment);
|
||||
le64_add_cpu(&super->manifest.level_counts[level], -1ULL);
|
||||
return 0;
|
||||
@@ -500,7 +508,7 @@ int scoutfs_manifest_read_items(struct super_block *sb,
|
||||
int cmp;
|
||||
int n;
|
||||
|
||||
trace_printk("reading items\n");
|
||||
trace_scoutfs_read_items(sb, key, end);
|
||||
|
||||
/* get refs on all the segments */
|
||||
ret = scoutfs_net_manifest_range_entries(sb, key, end, &ref_list);
|
||||
@@ -509,6 +517,10 @@ int scoutfs_manifest_read_items(struct super_block *sb,
|
||||
|
||||
/* submit reads for all the segments */
|
||||
list_for_each_entry(ref, &ref_list, entry) {
|
||||
|
||||
trace_scoutfs_read_item_segment(sb, ref->level, ref->segno,
|
||||
ref->seq, ref->first, ref->last);
|
||||
|
||||
seg = scoutfs_seg_submit_read(sb, ref->segno);
|
||||
if (IS_ERR(seg)) {
|
||||
ret = PTR_ERR(seg);
|
||||
|
||||
+43
-13
@@ -181,27 +181,51 @@ TRACE_EVENT(scoutfs_scan_orphans,
|
||||
TP_printk("dev %d,%d", MAJOR(__entry->dev), MINOR(__entry->dev))
|
||||
);
|
||||
|
||||
TRACE_EVENT(scoutfs_manifest_add,
|
||||
TP_PROTO(struct super_block *sb, struct scoutfs_key_buf *first,
|
||||
struct scoutfs_key_buf *last, u64 segno, u64 seq, u8 level),
|
||||
TP_ARGS(sb, first, last, segno, seq, level),
|
||||
DECLARE_EVENT_CLASS(scoutfs_manifest_class,
|
||||
TP_PROTO(struct super_block *sb, u8 level, u64 segno, u64 seq,
|
||||
struct scoutfs_key_buf *first, struct scoutfs_key_buf *last),
|
||||
TP_ARGS(sb, level, segno, seq, first, last),
|
||||
TP_STRUCT__entry(
|
||||
__dynamic_array(char, first, scoutfs_key_str(NULL, first))
|
||||
__dynamic_array(char, last, scoutfs_key_str(NULL, last))
|
||||
__field(u8, level)
|
||||
__field(u64, segno)
|
||||
__field(u64, seq)
|
||||
__field(u8, level)
|
||||
__dynamic_array(char, first, scoutfs_key_str(NULL, first))
|
||||
__dynamic_array(char, last, scoutfs_key_str(NULL, last))
|
||||
),
|
||||
TP_fast_assign(
|
||||
scoutfs_key_str(__get_dynamic_array(first), first);
|
||||
scoutfs_key_str(__get_dynamic_array(last), last);
|
||||
__entry->level = level;
|
||||
__entry->segno = segno;
|
||||
__entry->seq = seq;
|
||||
__entry->level = level;
|
||||
scoutfs_key_str(__get_dynamic_array(first), first);
|
||||
scoutfs_key_str(__get_dynamic_array(last), last);
|
||||
),
|
||||
TP_printk("first %s last %s segno %llu seq %llu level %u",
|
||||
__get_str(first), __get_str(last), __entry->segno,
|
||||
__entry->seq, __entry->level)
|
||||
TP_printk("level %u segno %llu seq %llu first %s last %s",
|
||||
__entry->level, __entry->segno, __entry->seq,
|
||||
__get_str(first), __get_str(last))
|
||||
);
|
||||
|
||||
DEFINE_EVENT(scoutfs_manifest_class, scoutfs_manifest_add,
|
||||
TP_PROTO(struct super_block *sb, u8 level, u64 segno, u64 seq,
|
||||
struct scoutfs_key_buf *first, struct scoutfs_key_buf *last),
|
||||
TP_ARGS(sb, level, segno, seq, first, last)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(scoutfs_manifest_class, scoutfs_manifest_delete,
|
||||
TP_PROTO(struct super_block *sb, u8 level, u64 segno, u64 seq,
|
||||
struct scoutfs_key_buf *first, struct scoutfs_key_buf *last),
|
||||
TP_ARGS(sb, level, segno, seq, first, last)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(scoutfs_manifest_class, scoutfs_compact_input,
|
||||
TP_PROTO(struct super_block *sb, u8 level, u64 segno, u64 seq,
|
||||
struct scoutfs_key_buf *first, struct scoutfs_key_buf *last),
|
||||
TP_ARGS(sb, level, segno, seq, first, last)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(scoutfs_manifest_class, scoutfs_read_item_segment,
|
||||
TP_PROTO(struct super_block *sb, u8 level, u64 segno, u64 seq,
|
||||
struct scoutfs_key_buf *first, struct scoutfs_key_buf *last),
|
||||
TP_ARGS(sb, level, segno, seq, first, last)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(scoutfs_key_class,
|
||||
@@ -264,6 +288,12 @@ DEFINE_EVENT(scoutfs_range_class, scoutfs_item_shrink_range,
|
||||
TP_ARGS(sb, start, end)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(scoutfs_range_class, scoutfs_read_items,
|
||||
TP_PROTO(struct super_block *sb, struct scoutfs_key_buf *start,
|
||||
struct scoutfs_key_buf *end),
|
||||
TP_ARGS(sb, start, end)
|
||||
);
|
||||
|
||||
#define lock_mode(mode) \
|
||||
__print_symbolic(mode, \
|
||||
{ SCOUTFS_LOCK_MODE_READ, "READ" }, \
|
||||
|
||||
Reference in New Issue
Block a user