/* SPDX-License-Identifier: GPL-2.0 */ #undef TRACE_SYSTEM #define TRACE_SYSTEM ntfs3 #if !defined(_TRACE_NTFS3_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_NTFS3_H #include #include TRACE_EVENT(ntfs3_fill_super, TP_PROTO(struct super_block *sb, bool ro, u32 cluster_size, u32 record_size, u32 index_size, int err), TP_ARGS(sb, ro, cluster_size, record_size, index_size, err), TP_STRUCT__entry( __field(dev_t, dev) __field(u32, cluster_size) __field(u32, record_size) __field(u32, index_size) __field(int, err) __field(bool, ro) ), TP_fast_assign( __entry->dev = sb->s_bdev->bd_dev; __entry->cluster_size = cluster_size; __entry->record_size = record_size; __entry->index_size = index_size; __entry->err = err; __entry->ro = ro; ), TP_printk("dev=(%d,%d) ro=%d cluster=%u record=%u index=%u err=%d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ro, __entry->cluster_size, __entry->record_size, __entry->index_size, __entry->err) ); TRACE_EVENT(ntfs3_init_from_boot, TP_PROTO(struct super_block *sb, u32 media_sector_size, u32 boot_sector_size, bool used_alt_boot, int err), TP_ARGS(sb, media_sector_size, boot_sector_size, used_alt_boot, err), TP_STRUCT__entry( __field(dev_t, dev) __field(u32, media_sector_size) __field(u32, boot_sector_size) __field(int, err) __field(bool, used_alt_boot) ), TP_fast_assign( __entry->dev = sb->s_bdev->bd_dev; __entry->media_sector_size = media_sector_size; __entry->boot_sector_size = boot_sector_size; __entry->err = err; __entry->used_alt_boot = used_alt_boot; ), TP_printk("dev=(%d,%d) media_sector=%u boot_sector=%u alt_boot=%d err=%d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->media_sector_size, __entry->boot_sector_size, __entry->used_alt_boot, __entry->err) ); TRACE_EVENT(ntfs3_log_replay, TP_PROTO(struct inode *inode, bool initialized, int err), TP_ARGS(inode, initialized, err), TP_STRUCT__entry( __field(unsigned long, ino) __field(loff_t, size) __field(dev_t, dev) __field(int, err) __field(bool, initialized) ), TP_fast_assign( __entry->ino = inode->i_ino; __entry->size = i_size_read(inode); __entry->dev = inode->i_sb->s_dev; __entry->err = err; __entry->initialized = initialized; ), TP_printk("dev=(%d,%d) ino=%lu size=%lld initialized=%d err=%d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->size, __entry->initialized, __entry->err) ); TRACE_EVENT(ntfs3_lookup, TP_PROTO(struct inode *dir, struct dentry *dentry), TP_ARGS(dir, dentry), TP_STRUCT__entry( __field(unsigned long, parent_ino) __field(dev_t, dev) __string(name, dentry->d_name.name) ), TP_fast_assign( __entry->parent_ino = dir->i_ino; __entry->dev = dir->i_sb->s_dev; __assign_str(name); ), TP_printk("dev=(%d,%d) parent=%lu name=%s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->parent_ino, __get_str(name)) ); TRACE_EVENT(ntfs3_rename, TP_PROTO(struct inode *dir, struct dentry *dentry, struct inode *new_dir, struct dentry *new_dentry), TP_ARGS(dir, dentry, new_dir, new_dentry), TP_STRUCT__entry( __field(unsigned long, dir_ino) __field(unsigned long, new_dir_ino) __field(unsigned long, ino) __field(dev_t, dev) __string(old_name, dentry->d_name.name) __string(new_name, new_dentry->d_name.name) ), TP_fast_assign( __entry->dir_ino = dir->i_ino; __entry->new_dir_ino = new_dir->i_ino; __entry->ino = d_inode(dentry)->i_ino; __entry->dev = dir->i_sb->s_dev; __assign_str(old_name); __assign_str(new_name); ), TP_printk("dev=(%d,%d) dir=%lu new_dir=%lu ino=%lu old=%s new=%s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->dir_ino, __entry->new_dir_ino, __entry->ino, __get_str(old_name), __get_str(new_name)) ); TRACE_EVENT(ntfs3_create_inode, TP_PROTO(struct inode *dir, struct dentry *dentry), TP_ARGS(dir, dentry), TP_STRUCT__entry( __field(unsigned long, parent_ino) __field(dev_t, dev) __string(name, dentry->d_name.name) ), TP_fast_assign( __entry->parent_ino = dir->i_ino; __entry->dev = dir->i_sb->s_dev; __assign_str(name); ), TP_printk("dev=(%d,%d) parent=%lu name=%s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->parent_ino, __get_str(name)) ); TRACE_EVENT(ntfs3_dir_search_u, TP_PROTO(struct inode *dir, unsigned int name_len), TP_ARGS(dir, name_len), TP_STRUCT__entry( __field(unsigned long, dir_ino) __field(dev_t, dev) __field(unsigned int, name_len) ), TP_fast_assign( __entry->dir_ino = dir->i_ino; __entry->dev = dir->i_sb->s_dev; __entry->name_len = name_len; ), TP_printk("dev=(%d,%d) dir=%lu name_len=%u", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->dir_ino, __entry->name_len) ); TRACE_EVENT(ntfs3_indx_find, TP_PROTO(struct inode *inode, u8 type, size_t key_len), TP_ARGS(inode, type, key_len), TP_STRUCT__entry( __field(unsigned long, ino) __field(size_t, key_len) __field(dev_t, dev) __field(u8, type) ), TP_fast_assign( __entry->ino = inode->i_ino; __entry->key_len = key_len; __entry->dev = inode->i_sb->s_dev; __entry->type = type; ), TP_printk("dev=(%d,%d) ino=%lu type=%u key_len=%zu", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->type, __entry->key_len) ); TRACE_EVENT(ntfs3_indx_insert_entry, TP_PROTO(struct inode *inode, u8 type, u16 key_len, bool undo), TP_ARGS(inode, type, key_len, undo), TP_STRUCT__entry( __field(unsigned long, ino) __field(dev_t, dev) __field(u16, key_len) __field(u8, type) __field(bool, undo) ), TP_fast_assign( __entry->ino = inode->i_ino; __entry->dev = inode->i_sb->s_dev; __entry->key_len = key_len; __entry->type = type; __entry->undo = undo; ), TP_printk("dev=(%d,%d) ino=%lu type=%u key_len=%u undo=%d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->type, __entry->key_len, __entry->undo) ); TRACE_EVENT(ntfs3_indx_delete_entry, TP_PROTO(struct inode *inode, u8 type, u32 key_len), TP_ARGS(inode, type, key_len), TP_STRUCT__entry( __field(unsigned long, ino) __field(u32, key_len) __field(dev_t, dev) __field(u8, type) ), TP_fast_assign( __entry->ino = inode->i_ino; __entry->key_len = key_len; __entry->dev = inode->i_sb->s_dev; __entry->type = type; ), TP_printk("dev=(%d,%d) ino=%lu type=%u key_len=%u", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->type, __entry->key_len) ); TRACE_EVENT(ntfs3_attr_allocate_clusters, TP_PROTO(struct super_block *sb, u64 vcn, u64 lcn, u64 len, u32 opt), TP_ARGS(sb, vcn, lcn, len, opt), TP_STRUCT__entry( __field(u64, vcn) __field(u64, lcn) __field(u64, len) __field(dev_t, dev) __field(u32, opt) ), TP_fast_assign( __entry->vcn = vcn; __entry->lcn = lcn; __entry->len = len; __entry->dev = sb->s_dev; __entry->opt = opt; ), TP_printk("dev=(%d,%d) vcn=%llu lcn=%llu len=%llu opt=0x%x", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->vcn, __entry->lcn, __entry->len, __entry->opt) ); TRACE_EVENT(ntfs3_attr_set_size_ex, TP_PROTO(struct inode *inode, u32 type, u64 old_size, u64 new_size, bool keep_prealloc, bool no_da), TP_ARGS(inode, type, old_size, new_size, keep_prealloc, no_da), TP_STRUCT__entry( __field(u64, old_size) __field(u64, new_size) __field(unsigned long, ino) __field(dev_t, dev) __field(u32, type) __field(bool, keep_prealloc) __field(bool, no_da) ), TP_fast_assign( __entry->old_size = old_size; __entry->new_size = new_size; __entry->ino = inode->i_ino; __entry->dev = inode->i_sb->s_dev; __entry->type = type; __entry->keep_prealloc = keep_prealloc; __entry->no_da = no_da; ), TP_printk("dev=(%d,%d) ino=%lu type=0x%x old_size=%llu new_size=%llu keep_prealloc=%d no_da=%d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->type, __entry->old_size, __entry->new_size, __entry->keep_prealloc, __entry->no_da) ); TRACE_EVENT(ntfs3_attr_data_get_block, TP_PROTO(struct inode *inode, u64 vcn, u64 clen, bool *new, bool zero, bool no_da), TP_ARGS(inode, vcn, clen, new, zero, no_da), TP_STRUCT__entry( __field(u64, vcn) __field(u64, clen) __field(unsigned long, ino) __field(dev_t, dev) __field(bool, create) __field(bool, zero) __field(bool, no_da) ), TP_fast_assign( __entry->vcn = vcn; __entry->clen = clen; __entry->ino = inode->i_ino; __entry->dev = inode->i_sb->s_dev; __entry->create = !!new; __entry->zero = zero; __entry->no_da = no_da; ), TP_printk("dev=(%d,%d) ino=%lu vcn=%llu clen=%llu create=%d zero=%d no_da=%d", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->vcn, __entry->clen, __entry->create, __entry->zero, __entry->no_da) ); TRACE_EVENT(ntfs3_iomap_begin, TP_PROTO(struct inode *inode, loff_t offset, loff_t length, unsigned int flags), TP_ARGS(inode, offset, length, flags), TP_STRUCT__entry( __field(unsigned long, ino) __field(loff_t, offset) __field(loff_t, length) __field(dev_t, dev) __field(unsigned int, flags) ), TP_fast_assign( __entry->ino = inode->i_ino; __entry->offset = offset; __entry->length = length; __entry->dev = inode->i_sb->s_dev; __entry->flags = flags; ), TP_printk("dev=(%d,%d) ino=%lu offset=%lld length=%lld flags=0x%x", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->offset, __entry->length, __entry->flags) ); TRACE_EVENT(ntfs3_iomap_end, TP_PROTO(struct inode *inode, loff_t pos, loff_t length, ssize_t written, unsigned int flags), TP_ARGS(inode, pos, length, written, flags), TP_STRUCT__entry( __field(unsigned long, ino) __field(loff_t, pos) __field(loff_t, length) __field(ssize_t, written) __field(dev_t, dev) __field(unsigned int, flags) ), TP_fast_assign( __entry->ino = inode->i_ino; __entry->pos = pos; __entry->length = length; __entry->written = written; __entry->dev = inode->i_sb->s_dev; __entry->flags = flags; ), TP_printk("dev=(%d,%d) ino=%lu pos=%lld length=%lld written=%zd flags=0x%x", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->pos, __entry->length, __entry->written, __entry->flags) ); DECLARE_EVENT_CLASS(ntfs3_file_class, TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), TP_ARGS(iocb, iter), TP_STRUCT__entry( __field(loff_t, size) __field(loff_t, offset) __field(size_t, count) __field(unsigned long, ino) __field(dev_t, dev) ), TP_fast_assign( __entry->size = i_size_read(file_inode(iocb->ki_filp)); __entry->offset = iocb->ki_pos; __entry->count = iov_iter_count(iter); __entry->ino = file_inode(iocb->ki_filp)->i_ino; __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; ), TP_printk("dev=(%d,%d) ino=%lu size=%lld pos=%lld bytecount=%zu", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, __entry->size, __entry->offset, __entry->count) ); DEFINE_EVENT(ntfs3_file_class, ntfs3_file_read_iter, TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), TP_ARGS(iocb, iter) ); DEFINE_EVENT(ntfs3_file_class, ntfs3_file_write_iter, TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), TP_ARGS(iocb, iter) ); #endif /* _TRACE_NTFS3_H */ #include