|
@@ -19,6 +19,57 @@ struct extent_status;
|
|
|
|
|
|
#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
|
|
|
|
|
|
+#define show_mballoc_flags(flags) __print_flags(flags, "|", \
|
|
|
+ { EXT4_MB_HINT_MERGE, "HINT_MERGE" }, \
|
|
|
+ { EXT4_MB_HINT_RESERVED, "HINT_RESV" }, \
|
|
|
+ { EXT4_MB_HINT_METADATA, "HINT_MDATA" }, \
|
|
|
+ { EXT4_MB_HINT_FIRST, "HINT_FIRST" }, \
|
|
|
+ { EXT4_MB_HINT_BEST, "HINT_BEST" }, \
|
|
|
+ { EXT4_MB_HINT_DATA, "HINT_DATA" }, \
|
|
|
+ { EXT4_MB_HINT_NOPREALLOC, "HINT_NOPREALLOC" }, \
|
|
|
+ { EXT4_MB_HINT_GROUP_ALLOC, "HINT_GRP_ALLOC" }, \
|
|
|
+ { EXT4_MB_HINT_GOAL_ONLY, "HINT_GOAL_ONLY" }, \
|
|
|
+ { EXT4_MB_HINT_TRY_GOAL, "HINT_TRY_GOAL" }, \
|
|
|
+ { EXT4_MB_DELALLOC_RESERVED, "DELALLOC_RESV" }, \
|
|
|
+ { EXT4_MB_STREAM_ALLOC, "STREAM_ALLOC" }, \
|
|
|
+ { EXT4_MB_USE_ROOT_BLOCKS, "USE_ROOT_BLKS" }, \
|
|
|
+ { EXT4_MB_USE_RESERVED, "USE_RESV" })
|
|
|
+
|
|
|
+#define show_map_flags(flags) __print_flags(flags, "|", \
|
|
|
+ { EXT4_GET_BLOCKS_CREATE, "CREATE" }, \
|
|
|
+ { EXT4_GET_BLOCKS_UNINIT_EXT, "UNINIT" }, \
|
|
|
+ { EXT4_GET_BLOCKS_DELALLOC_RESERVE, "DELALLOC" }, \
|
|
|
+ { EXT4_GET_BLOCKS_PRE_IO, "PRE_IO" }, \
|
|
|
+ { EXT4_GET_BLOCKS_CONVERT, "CONVERT" }, \
|
|
|
+ { EXT4_GET_BLOCKS_METADATA_NOFAIL, "METADATA_NOFAIL" }, \
|
|
|
+ { EXT4_GET_BLOCKS_NO_NORMALIZE, "NO_NORMALIZE" }, \
|
|
|
+ { EXT4_GET_BLOCKS_KEEP_SIZE, "KEEP_SIZE" }, \
|
|
|
+ { EXT4_GET_BLOCKS_NO_LOCK, "NO_LOCK" }, \
|
|
|
+ { EXT4_GET_BLOCKS_NO_PUT_HOLE, "NO_PUT_HOLE" })
|
|
|
+
|
|
|
+#define show_mflags(flags) __print_flags(flags, "", \
|
|
|
+ { EXT4_MAP_NEW, "N" }, \
|
|
|
+ { EXT4_MAP_MAPPED, "M" }, \
|
|
|
+ { EXT4_MAP_UNWRITTEN, "U" }, \
|
|
|
+ { EXT4_MAP_BOUNDARY, "B" }, \
|
|
|
+ { EXT4_MAP_UNINIT, "u" }, \
|
|
|
+ { EXT4_MAP_FROM_CLUSTER, "C" })
|
|
|
+
|
|
|
+#define show_free_flags(flags) __print_flags(flags, "|", \
|
|
|
+ { EXT4_FREE_BLOCKS_METADATA, "METADATA" }, \
|
|
|
+ { EXT4_FREE_BLOCKS_FORGET, "FORGET" }, \
|
|
|
+ { EXT4_FREE_BLOCKS_VALIDATED, "VALIDATED" }, \
|
|
|
+ { EXT4_FREE_BLOCKS_NO_QUOT_UPDATE, "NO_QUOTA" }, \
|
|
|
+ { EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
|
|
|
+ { EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER, "LAST_CLUSTER" })
|
|
|
+
|
|
|
+#define show_extent_status(status) __print_flags(status, "", \
|
|
|
+ { (1 << 3), "W" }, \
|
|
|
+ { (1 << 2), "U" }, \
|
|
|
+ { (1 << 1), "D" }, \
|
|
|
+ { (1 << 0), "H" })
|
|
|
+
|
|
|
+
|
|
|
TRACE_EVENT(ext4_free_inode,
|
|
|
TP_PROTO(struct inode *inode),
|
|
|
|
|
@@ -281,7 +332,7 @@ DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
|
|
|
TP_ARGS(inode, pos, len, copied)
|
|
|
);
|
|
|
|
|
|
-TRACE_EVENT(ext4_da_writepages,
|
|
|
+TRACE_EVENT(ext4_writepages,
|
|
|
TP_PROTO(struct inode *inode, struct writeback_control *wbc),
|
|
|
|
|
|
TP_ARGS(inode, wbc),
|
|
@@ -324,46 +375,62 @@ TRACE_EVENT(ext4_da_writepages,
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_da_write_pages,
|
|
|
- TP_PROTO(struct inode *inode, struct mpage_da_data *mpd),
|
|
|
+ TP_PROTO(struct inode *inode, pgoff_t first_page,
|
|
|
+ struct writeback_control *wbc),
|
|
|
|
|
|
- TP_ARGS(inode, mpd),
|
|
|
+ TP_ARGS(inode, first_page, wbc),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field( ino_t, ino )
|
|
|
- __field( __u64, b_blocknr )
|
|
|
- __field( __u32, b_size )
|
|
|
- __field( __u32, b_state )
|
|
|
- __field( unsigned long, first_page )
|
|
|
- __field( int, io_done )
|
|
|
- __field( int, pages_written )
|
|
|
- __field( int, sync_mode )
|
|
|
+ __field( pgoff_t, first_page )
|
|
|
+ __field( long, nr_to_write )
|
|
|
+ __field( int, sync_mode )
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
|
__entry->dev = inode->i_sb->s_dev;
|
|
|
__entry->ino = inode->i_ino;
|
|
|
- __entry->b_blocknr = mpd->b_blocknr;
|
|
|
- __entry->b_size = mpd->b_size;
|
|
|
- __entry->b_state = mpd->b_state;
|
|
|
- __entry->first_page = mpd->first_page;
|
|
|
- __entry->io_done = mpd->io_done;
|
|
|
- __entry->pages_written = mpd->pages_written;
|
|
|
- __entry->sync_mode = mpd->wbc->sync_mode;
|
|
|
+ __entry->first_page = first_page;
|
|
|
+ __entry->nr_to_write = wbc->nr_to_write;
|
|
|
+ __entry->sync_mode = wbc->sync_mode;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu b_blocknr %llu b_size %u b_state 0x%04x "
|
|
|
- "first_page %lu io_done %d pages_written %d sync_mode %d",
|
|
|
+ TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
|
|
|
+ "sync_mode %d",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
- (unsigned long) __entry->ino,
|
|
|
- __entry->b_blocknr, __entry->b_size,
|
|
|
- __entry->b_state, __entry->first_page,
|
|
|
- __entry->io_done, __entry->pages_written,
|
|
|
- __entry->sync_mode
|
|
|
- )
|
|
|
+ (unsigned long) __entry->ino, __entry->first_page,
|
|
|
+ __entry->nr_to_write, __entry->sync_mode)
|
|
|
);
|
|
|
|
|
|
-TRACE_EVENT(ext4_da_writepages_result,
|
|
|
+TRACE_EVENT(ext4_da_write_pages_extent,
|
|
|
+ TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
|
|
|
+
|
|
|
+ TP_ARGS(inode, map),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field( dev_t, dev )
|
|
|
+ __field( ino_t, ino )
|
|
|
+ __field( __u64, lblk )
|
|
|
+ __field( __u32, len )
|
|
|
+ __field( __u32, flags )
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ __entry->dev = inode->i_sb->s_dev;
|
|
|
+ __entry->ino = inode->i_ino;
|
|
|
+ __entry->lblk = map->m_lblk;
|
|
|
+ __entry->len = map->m_len;
|
|
|
+ __entry->flags = map->m_flags;
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ (unsigned long) __entry->ino, __entry->lblk, __entry->len,
|
|
|
+ show_mflags(__entry->flags))
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(ext4_writepages_result,
|
|
|
TP_PROTO(struct inode *inode, struct writeback_control *wbc,
|
|
|
int ret, int pages_written),
|
|
|
|
|
@@ -444,16 +511,16 @@ DEFINE_EVENT(ext4__page_op, ext4_releasepage,
|
|
|
);
|
|
|
|
|
|
DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
|
|
|
- TP_PROTO(struct page *page, unsigned long offset),
|
|
|
+ TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
|
|
|
|
|
|
- TP_ARGS(page, offset),
|
|
|
+ TP_ARGS(page, offset, length),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field( ino_t, ino )
|
|
|
__field( pgoff_t, index )
|
|
|
- __field( unsigned long, offset )
|
|
|
-
|
|
|
+ __field( unsigned int, offset )
|
|
|
+ __field( unsigned int, length )
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
@@ -461,24 +528,26 @@ DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
|
|
|
__entry->ino = page->mapping->host->i_ino;
|
|
|
__entry->index = page->index;
|
|
|
__entry->offset = offset;
|
|
|
+ __entry->length = length;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
|
|
|
+ TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
- (unsigned long) __entry->index, __entry->offset)
|
|
|
+ (unsigned long) __entry->index,
|
|
|
+ __entry->offset, __entry->length)
|
|
|
);
|
|
|
|
|
|
DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage,
|
|
|
- TP_PROTO(struct page *page, unsigned long offset),
|
|
|
+ TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
|
|
|
|
|
|
- TP_ARGS(page, offset)
|
|
|
+ TP_ARGS(page, offset, length)
|
|
|
);
|
|
|
|
|
|
DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage,
|
|
|
- TP_PROTO(struct page *page, unsigned long offset),
|
|
|
+ TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
|
|
|
|
|
|
- TP_ARGS(page, offset)
|
|
|
+ TP_ARGS(page, offset, length)
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_discard_blocks,
|
|
@@ -673,10 +742,10 @@ TRACE_EVENT(ext4_request_blocks,
|
|
|
__entry->flags = ar->flags;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu flags %u len %u lblk %u goal %llu "
|
|
|
+ TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
|
|
|
"lleft %u lright %u pleft %llu pright %llu ",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
- (unsigned long) __entry->ino, __entry->flags,
|
|
|
+ (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
|
|
|
__entry->len, __entry->logical, __entry->goal,
|
|
|
__entry->lleft, __entry->lright, __entry->pleft,
|
|
|
__entry->pright)
|
|
@@ -715,10 +784,10 @@ TRACE_EVENT(ext4_allocate_blocks,
|
|
|
__entry->flags = ar->flags;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %u "
|
|
|
+ TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
|
|
|
"goal %llu lleft %u lright %u pleft %llu pright %llu",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
- (unsigned long) __entry->ino, __entry->flags,
|
|
|
+ (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
|
|
|
__entry->len, __entry->block, __entry->logical,
|
|
|
__entry->goal, __entry->lleft, __entry->lright,
|
|
|
__entry->pleft, __entry->pright)
|
|
@@ -748,11 +817,11 @@ TRACE_EVENT(ext4_free_blocks,
|
|
|
__entry->mode = inode->i_mode;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d",
|
|
|
+ TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
__entry->mode, __entry->block, __entry->count,
|
|
|
- __entry->flags)
|
|
|
+ show_free_flags(__entry->flags))
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_sync_file_enter,
|
|
@@ -903,7 +972,7 @@ TRACE_EVENT(ext4_mballoc_alloc,
|
|
|
),
|
|
|
|
|
|
TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
|
|
|
- "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x "
|
|
|
+ "result %u/%d/%u@%u blks %u grps %u cr %u flags %s "
|
|
|
"tail %u broken %u",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
@@ -914,7 +983,7 @@ TRACE_EVENT(ext4_mballoc_alloc,
|
|
|
__entry->result_group, __entry->result_start,
|
|
|
__entry->result_len, __entry->result_logical,
|
|
|
__entry->found, __entry->groups, __entry->cr,
|
|
|
- __entry->flags, __entry->tail,
|
|
|
+ show_mballoc_flags(__entry->flags), __entry->tail,
|
|
|
__entry->buddy ? 1 << __entry->buddy : 0)
|
|
|
);
|
|
|
|
|
@@ -1528,10 +1597,10 @@ DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
|
|
|
__entry->flags = flags;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u",
|
|
|
+ TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
- __entry->lblk, __entry->len, __entry->flags)
|
|
|
+ __entry->lblk, __entry->len, show_map_flags(__entry->flags))
|
|
|
);
|
|
|
|
|
|
DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
|
|
@@ -1549,47 +1618,53 @@ DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
|
|
|
);
|
|
|
|
|
|
DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
|
|
|
- TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
|
|
|
+ TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
|
|
|
+ int ret),
|
|
|
|
|
|
- TP_ARGS(inode, map, ret),
|
|
|
+ TP_ARGS(inode, flags, map, ret),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field( ino_t, ino )
|
|
|
+ __field( unsigned int, flags )
|
|
|
__field( ext4_fsblk_t, pblk )
|
|
|
__field( ext4_lblk_t, lblk )
|
|
|
__field( unsigned int, len )
|
|
|
- __field( unsigned int, flags )
|
|
|
+ __field( unsigned int, mflags )
|
|
|
__field( int, ret )
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
|
__entry->dev = inode->i_sb->s_dev;
|
|
|
__entry->ino = inode->i_ino;
|
|
|
+ __entry->flags = flags;
|
|
|
__entry->pblk = map->m_pblk;
|
|
|
__entry->lblk = map->m_lblk;
|
|
|
__entry->len = map->m_len;
|
|
|
- __entry->flags = map->m_flags;
|
|
|
+ __entry->mflags = map->m_flags;
|
|
|
__entry->ret = ret;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u flags %x ret %d",
|
|
|
+ TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
|
|
|
+ "mflags %s ret %d",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
- __entry->lblk, __entry->pblk,
|
|
|
- __entry->len, __entry->flags, __entry->ret)
|
|
|
+ show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
|
|
|
+ __entry->len, show_mflags(__entry->mflags), __entry->ret)
|
|
|
);
|
|
|
|
|
|
DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
|
|
|
- TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
|
|
|
+ TP_PROTO(struct inode *inode, unsigned flags,
|
|
|
+ struct ext4_map_blocks *map, int ret),
|
|
|
|
|
|
- TP_ARGS(inode, map, ret)
|
|
|
+ TP_ARGS(inode, flags, map, ret)
|
|
|
);
|
|
|
|
|
|
DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
|
|
|
- TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
|
|
|
+ TP_PROTO(struct inode *inode, unsigned flags,
|
|
|
+ struct ext4_map_blocks *map, int ret),
|
|
|
|
|
|
- TP_ARGS(inode, map, ret)
|
|
|
+ TP_ARGS(inode, flags, map, ret)
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_ext_load_extent,
|
|
@@ -1638,25 +1713,50 @@ TRACE_EVENT(ext4_load_inode,
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_journal_start,
|
|
|
- TP_PROTO(struct super_block *sb, int nblocks, unsigned long IP),
|
|
|
+ TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
|
|
|
+ unsigned long IP),
|
|
|
|
|
|
- TP_ARGS(sb, nblocks, IP),
|
|
|
+ TP_ARGS(sb, blocks, rsv_blocks, IP),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field(unsigned long, ip )
|
|
|
- __field( int, nblocks )
|
|
|
+ __field( int, blocks )
|
|
|
+ __field( int, rsv_blocks )
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
|
- __entry->dev = sb->s_dev;
|
|
|
- __entry->ip = IP;
|
|
|
- __entry->nblocks = nblocks;
|
|
|
+ __entry->dev = sb->s_dev;
|
|
|
+ __entry->ip = IP;
|
|
|
+ __entry->blocks = blocks;
|
|
|
+ __entry->rsv_blocks = rsv_blocks;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d nblocks %d caller %pF",
|
|
|
+ TP_printk("dev %d,%d blocks, %d rsv_blocks, %d caller %pF",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
- __entry->nblocks, (void *)__entry->ip)
|
|
|
+ __entry->blocks, __entry->rsv_blocks, (void *)__entry->ip)
|
|
|
+);
|
|
|
+
|
|
|
+TRACE_EVENT(ext4_journal_start_reserved,
|
|
|
+ TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
|
|
|
+
|
|
|
+ TP_ARGS(sb, blocks, IP),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field( dev_t, dev )
|
|
|
+ __field(unsigned long, ip )
|
|
|
+ __field( int, blocks )
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ __entry->dev = sb->s_dev;
|
|
|
+ __entry->ip = IP;
|
|
|
+ __entry->blocks = blocks;
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk("dev %d,%d blocks, %d caller %pF",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ __entry->blocks, (void *)__entry->ip)
|
|
|
);
|
|
|
|
|
|
DECLARE_EVENT_CLASS(ext4__trim,
|
|
@@ -1736,12 +1836,12 @@ TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
|
|
|
__entry->newblk = newblock;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %x "
|
|
|
+ TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
|
|
|
"allocated %d newblock %llu",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
(unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
|
|
|
- __entry->len, __entry->flags,
|
|
|
+ __entry->len, show_map_flags(__entry->flags),
|
|
|
(unsigned int) __entry->allocated,
|
|
|
(unsigned long long) __entry->newblk)
|
|
|
);
|
|
@@ -1769,10 +1869,10 @@ TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
|
|
|
__entry->ret = ret;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %u ret %d",
|
|
|
+ TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
__entry->lblk, (unsigned long long) __entry->pblk,
|
|
|
- __entry->len, __entry->flags, __entry->ret)
|
|
|
+ __entry->len, show_mflags(__entry->flags), __entry->ret)
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_ext_put_in_cache,
|
|
@@ -1926,7 +2026,7 @@ TRACE_EVENT(ext4_ext_show_extent,
|
|
|
TRACE_EVENT(ext4_remove_blocks,
|
|
|
TP_PROTO(struct inode *inode, struct ext4_extent *ex,
|
|
|
ext4_lblk_t from, ext4_fsblk_t to,
|
|
|
- ext4_fsblk_t partial_cluster),
|
|
|
+ long long partial_cluster),
|
|
|
|
|
|
TP_ARGS(inode, ex, from, to, partial_cluster),
|
|
|
|
|
@@ -1935,7 +2035,7 @@ TRACE_EVENT(ext4_remove_blocks,
|
|
|
__field( ino_t, ino )
|
|
|
__field( ext4_lblk_t, from )
|
|
|
__field( ext4_lblk_t, to )
|
|
|
- __field( ext4_fsblk_t, partial )
|
|
|
+ __field( long long, partial )
|
|
|
__field( ext4_fsblk_t, ee_pblk )
|
|
|
__field( ext4_lblk_t, ee_lblk )
|
|
|
__field( unsigned short, ee_len )
|
|
@@ -1953,7 +2053,7 @@ TRACE_EVENT(ext4_remove_blocks,
|
|
|
),
|
|
|
|
|
|
TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
|
|
|
- "from %u to %u partial_cluster %u",
|
|
|
+ "from %u to %u partial_cluster %lld",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
(unsigned) __entry->ee_lblk,
|
|
@@ -1961,19 +2061,20 @@ TRACE_EVENT(ext4_remove_blocks,
|
|
|
(unsigned short) __entry->ee_len,
|
|
|
(unsigned) __entry->from,
|
|
|
(unsigned) __entry->to,
|
|
|
- (unsigned) __entry->partial)
|
|
|
+ (long long) __entry->partial)
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_ext_rm_leaf,
|
|
|
TP_PROTO(struct inode *inode, ext4_lblk_t start,
|
|
|
- struct ext4_extent *ex, ext4_fsblk_t partial_cluster),
|
|
|
+ struct ext4_extent *ex,
|
|
|
+ long long partial_cluster),
|
|
|
|
|
|
TP_ARGS(inode, start, ex, partial_cluster),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field( ino_t, ino )
|
|
|
- __field( ext4_fsblk_t, partial )
|
|
|
+ __field( long long, partial )
|
|
|
__field( ext4_lblk_t, start )
|
|
|
__field( ext4_lblk_t, ee_lblk )
|
|
|
__field( ext4_fsblk_t, ee_pblk )
|
|
@@ -1991,14 +2092,14 @@ TRACE_EVENT(ext4_ext_rm_leaf,
|
|
|
),
|
|
|
|
|
|
TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
|
|
|
- "partial_cluster %u",
|
|
|
+ "partial_cluster %lld",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
(unsigned) __entry->start,
|
|
|
(unsigned) __entry->ee_lblk,
|
|
|
(unsigned long long) __entry->ee_pblk,
|
|
|
(unsigned short) __entry->ee_len,
|
|
|
- (unsigned) __entry->partial)
|
|
|
+ (long long) __entry->partial)
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_ext_rm_idx,
|
|
@@ -2025,14 +2126,16 @@ TRACE_EVENT(ext4_ext_rm_idx,
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_ext_remove_space,
|
|
|
- TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth),
|
|
|
+ TP_PROTO(struct inode *inode, ext4_lblk_t start,
|
|
|
+ ext4_lblk_t end, int depth),
|
|
|
|
|
|
- TP_ARGS(inode, start, depth),
|
|
|
+ TP_ARGS(inode, start, end, depth),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field( ino_t, ino )
|
|
|
__field( ext4_lblk_t, start )
|
|
|
+ __field( ext4_lblk_t, end )
|
|
|
__field( int, depth )
|
|
|
),
|
|
|
|
|
@@ -2040,28 +2143,31 @@ TRACE_EVENT(ext4_ext_remove_space,
|
|
|
__entry->dev = inode->i_sb->s_dev;
|
|
|
__entry->ino = inode->i_ino;
|
|
|
__entry->start = start;
|
|
|
+ __entry->end = end;
|
|
|
__entry->depth = depth;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu since %u depth %d",
|
|
|
+ TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
(unsigned) __entry->start,
|
|
|
+ (unsigned) __entry->end,
|
|
|
__entry->depth)
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_ext_remove_space_done,
|
|
|
- TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth,
|
|
|
- ext4_lblk_t partial, __le16 eh_entries),
|
|
|
+ TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
|
|
|
+ int depth, long long partial, __le16 eh_entries),
|
|
|
|
|
|
- TP_ARGS(inode, start, depth, partial, eh_entries),
|
|
|
+ TP_ARGS(inode, start, end, depth, partial, eh_entries),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field( dev_t, dev )
|
|
|
__field( ino_t, ino )
|
|
|
__field( ext4_lblk_t, start )
|
|
|
+ __field( ext4_lblk_t, end )
|
|
|
__field( int, depth )
|
|
|
- __field( ext4_lblk_t, partial )
|
|
|
+ __field( long long, partial )
|
|
|
__field( unsigned short, eh_entries )
|
|
|
),
|
|
|
|
|
@@ -2069,18 +2175,20 @@ TRACE_EVENT(ext4_ext_remove_space_done,
|
|
|
__entry->dev = inode->i_sb->s_dev;
|
|
|
__entry->ino = inode->i_ino;
|
|
|
__entry->start = start;
|
|
|
+ __entry->end = end;
|
|
|
__entry->depth = depth;
|
|
|
__entry->partial = partial;
|
|
|
__entry->eh_entries = le16_to_cpu(eh_entries);
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu since %u depth %d partial %u "
|
|
|
+ TP_printk("dev %d,%d ino %lu since %u end %u depth %d partial %lld "
|
|
|
"remaining_entries %u",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
(unsigned) __entry->start,
|
|
|
+ (unsigned) __entry->end,
|
|
|
__entry->depth,
|
|
|
- (unsigned) __entry->partial,
|
|
|
+ (long long) __entry->partial,
|
|
|
(unsigned short) __entry->eh_entries)
|
|
|
);
|
|
|
|
|
@@ -2095,7 +2203,7 @@ TRACE_EVENT(ext4_es_insert_extent,
|
|
|
__field( ext4_lblk_t, lblk )
|
|
|
__field( ext4_lblk_t, len )
|
|
|
__field( ext4_fsblk_t, pblk )
|
|
|
- __field( unsigned long long, status )
|
|
|
+ __field( char, status )
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
@@ -2104,14 +2212,14 @@ TRACE_EVENT(ext4_es_insert_extent,
|
|
|
__entry->lblk = es->es_lblk;
|
|
|
__entry->len = es->es_len;
|
|
|
__entry->pblk = ext4_es_pblock(es);
|
|
|
- __entry->status = ext4_es_status(es);
|
|
|
+ __entry->status = ext4_es_status(es) >> 60;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %llx",
|
|
|
+ TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
__entry->lblk, __entry->len,
|
|
|
- __entry->pblk, __entry->status)
|
|
|
+ __entry->pblk, show_extent_status(__entry->status))
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_es_remove_extent,
|
|
@@ -2172,7 +2280,7 @@ TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
|
|
|
__field( ext4_lblk_t, lblk )
|
|
|
__field( ext4_lblk_t, len )
|
|
|
__field( ext4_fsblk_t, pblk )
|
|
|
- __field( unsigned long long, status )
|
|
|
+ __field( char, status )
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
@@ -2181,14 +2289,14 @@ TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
|
|
|
__entry->lblk = es->es_lblk;
|
|
|
__entry->len = es->es_len;
|
|
|
__entry->pblk = ext4_es_pblock(es);
|
|
|
- __entry->status = ext4_es_status(es);
|
|
|
+ __entry->status = ext4_es_status(es) >> 60;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %llx",
|
|
|
+ TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino,
|
|
|
__entry->lblk, __entry->len,
|
|
|
- __entry->pblk, __entry->status)
|
|
|
+ __entry->pblk, show_extent_status(__entry->status))
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_es_lookup_extent_enter,
|
|
@@ -2225,7 +2333,7 @@ TRACE_EVENT(ext4_es_lookup_extent_exit,
|
|
|
__field( ext4_lblk_t, lblk )
|
|
|
__field( ext4_lblk_t, len )
|
|
|
__field( ext4_fsblk_t, pblk )
|
|
|
- __field( unsigned long long, status )
|
|
|
+ __field( char, status )
|
|
|
__field( int, found )
|
|
|
),
|
|
|
|
|
@@ -2235,16 +2343,16 @@ TRACE_EVENT(ext4_es_lookup_extent_exit,
|
|
|
__entry->lblk = es->es_lblk;
|
|
|
__entry->len = es->es_len;
|
|
|
__entry->pblk = ext4_es_pblock(es);
|
|
|
- __entry->status = ext4_es_status(es);
|
|
|
+ __entry->status = ext4_es_status(es) >> 60;
|
|
|
__entry->found = found;
|
|
|
),
|
|
|
|
|
|
- TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %llx",
|
|
|
+ TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
|
|
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
(unsigned long) __entry->ino, __entry->found,
|
|
|
__entry->lblk, __entry->len,
|
|
|
__entry->found ? __entry->pblk : 0,
|
|
|
- __entry->found ? __entry->status : 0)
|
|
|
+ show_extent_status(__entry->found ? __entry->status : 0))
|
|
|
);
|
|
|
|
|
|
TRACE_EVENT(ext4_es_shrink_enter,
|