This patch adds compression and decompression trace points for the purpose of debugging.
Signed-off-by: Anand Jain <anand.j...@oracle.com> --- Note: I have used same trace function for both compress and decompress as I wanted to maintain compress and decompress debug data aligned. fs/btrfs/compression.c | 10 ++++++++++ include/trace/events/btrfs.h | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index ee934e612f15..9b0562cd1b7f 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -938,6 +938,10 @@ int btrfs_compress_pages(int type, struct address_space *mapping, start, pages, out_pages, total_in, total_out); + + trace_btrfs_encoder(1, 0, mapping->host, type, *total_in, + *total_out, start, ret); + free_workspace(type, workspace); return ret; } @@ -968,6 +972,9 @@ static int btrfs_decompress_bio(struct compressed_bio *cb) cb->compressed_pages, cb->start, cb->orig_bio, cb->compressed_len); + trace_btrfs_encoder(0, 1, cb->inode, type, + cb->compressed_len, cb->len, cb->start, ret); + free_workspace(type, workspace); return ret; } @@ -989,6 +996,9 @@ int btrfs_decompress(int type, unsigned char *data_in, struct page *dest_page, dest_page, start_byte, srclen, destlen); + trace_btrfs_encoder(0, 0, dest_page->mapping->host, + type, srclen, destlen, start_byte, ret); + free_workspace(type, workspace); return ret; } diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h index e37973526153..1ebffcd005a1 100644 --- a/include/trace/events/btrfs.h +++ b/include/trace/events/btrfs.h @@ -1658,6 +1658,42 @@ TRACE_EVENT(qgroup_meta_reserve, show_root_type(__entry->refroot), __entry->diff) ); +TRACE_EVENT(btrfs_encoder, + + TP_PROTO(int encode, int bio, struct inode *inode, int type, + unsigned long bfr, unsigned long aft, + unsigned long start, int ret), + + TP_ARGS(encode, bio, inode, type, bfr, aft, start, ret), + + TP_STRUCT__entry_btrfs( + __field( int, encode) + __field( int, bio) + __field( unsigned long, i_ino) + __field( int, type) + __field( unsigned long, bfr) + __field( unsigned long, aft) + __field( unsigned long, start) + __field( int, ret) + ), + + TP_fast_assign_btrfs(btrfs_sb(inode->i_sb), + __entry->encode = encode; + __entry->bio = bio; + __entry->i_ino = inode->i_ino; + __entry->type = type; + __entry->bfr = bfr; + __entry->aft = aft; + __entry->start = start; + __entry->ret = ret; + ), + + TP_printk_btrfs("%s %s ino:%lu tfm:%d bfr:%lu aft:%lu start:%lu ret:%d", + __entry->encode ? "encode":"decode", + __entry->bio ? "bio":"pge", __entry->i_ino, __entry->type, + __entry->bfr, __entry->aft, __entry->start, __entry->ret) + +); #endif /* _TRACE_BTRFS_H */ /* This part must be outside protection */ -- 2.10.0 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html