aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/jbd2.h9
-rw-r--r--include/trace/events/ext4.h136
2 files changed, 125 insertions, 20 deletions
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
index 3efc43f3f162..1be23d9fdacb 100644
--- a/include/linux/jbd2.h
+++ b/include/linux/jbd2.h
@@ -1096,7 +1096,6 @@ extern int jbd2_journal_get_undo_access(handle_t *, struct buffer_head *);
1096void jbd2_journal_set_triggers(struct buffer_head *, 1096void jbd2_journal_set_triggers(struct buffer_head *,
1097 struct jbd2_buffer_trigger_type *type); 1097 struct jbd2_buffer_trigger_type *type);
1098extern int jbd2_journal_dirty_metadata (handle_t *, struct buffer_head *); 1098extern int jbd2_journal_dirty_metadata (handle_t *, struct buffer_head *);
1099extern void jbd2_journal_release_buffer (handle_t *, struct buffer_head *);
1100extern int jbd2_journal_forget (handle_t *, struct buffer_head *); 1099extern int jbd2_journal_forget (handle_t *, struct buffer_head *);
1101extern void journal_sync_buffer (struct buffer_head *); 1100extern void journal_sync_buffer (struct buffer_head *);
1102extern void jbd2_journal_invalidatepage(journal_t *, 1101extern void jbd2_journal_invalidatepage(journal_t *,
@@ -1303,15 +1302,21 @@ static inline int jbd_space_needed(journal_t *journal)
1303 1302
1304extern int jbd_blocks_per_page(struct inode *inode); 1303extern int jbd_blocks_per_page(struct inode *inode);
1305 1304
1305/* JBD uses a CRC32 checksum */
1306#define JBD_MAX_CHECKSUM_SIZE 4
1307
1306static inline u32 jbd2_chksum(journal_t *journal, u32 crc, 1308static inline u32 jbd2_chksum(journal_t *journal, u32 crc,
1307 const void *address, unsigned int length) 1309 const void *address, unsigned int length)
1308{ 1310{
1309 struct { 1311 struct {
1310 struct shash_desc shash; 1312 struct shash_desc shash;
1311 char ctx[crypto_shash_descsize(journal->j_chksum_driver)]; 1313 char ctx[JBD_MAX_CHECKSUM_SIZE];
1312 } desc; 1314 } desc;
1313 int err; 1315 int err;
1314 1316
1317 BUG_ON(crypto_shash_descsize(journal->j_chksum_driver) >
1318 JBD_MAX_CHECKSUM_SIZE);
1319
1315 desc.shash.tfm = journal->j_chksum_driver; 1320 desc.shash.tfm = journal->j_chksum_driver;
1316 desc.shash.flags = 0; 1321 desc.shash.flags = 0;
1317 *(u32 *)desc.ctx = crc; 1322 *(u32 *)desc.ctx = crc;
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index d49b285385e8..f6372b011366 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -15,6 +15,7 @@ struct ext4_inode_info;
15struct mpage_da_data; 15struct mpage_da_data;
16struct ext4_map_blocks; 16struct ext4_map_blocks;
17struct ext4_extent; 17struct ext4_extent;
18struct extent_status;
18 19
19#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 20#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
20 21
@@ -1519,10 +1520,9 @@ DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1519); 1520);
1520 1521
1521DECLARE_EVENT_CLASS(ext4__map_blocks_exit, 1522DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1522 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1523 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
1523 ext4_fsblk_t pblk, unsigned int len, int ret),
1524 1524
1525 TP_ARGS(inode, lblk, pblk, len, ret), 1525 TP_ARGS(inode, map, ret),
1526 1526
1527 TP_STRUCT__entry( 1527 TP_STRUCT__entry(
1528 __field( dev_t, dev ) 1528 __field( dev_t, dev )
@@ -1530,37 +1530,37 @@ DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1530 __field( ext4_fsblk_t, pblk ) 1530 __field( ext4_fsblk_t, pblk )
1531 __field( ext4_lblk_t, lblk ) 1531 __field( ext4_lblk_t, lblk )
1532 __field( unsigned int, len ) 1532 __field( unsigned int, len )
1533 __field( unsigned int, flags )
1533 __field( int, ret ) 1534 __field( int, ret )
1534 ), 1535 ),
1535 1536
1536 TP_fast_assign( 1537 TP_fast_assign(
1537 __entry->dev = inode->i_sb->s_dev; 1538 __entry->dev = inode->i_sb->s_dev;
1538 __entry->ino = inode->i_ino; 1539 __entry->ino = inode->i_ino;
1539 __entry->pblk = pblk; 1540 __entry->pblk = map->m_pblk;
1540 __entry->lblk = lblk; 1541 __entry->lblk = map->m_lblk;
1541 __entry->len = len; 1542 __entry->len = map->m_len;
1543 __entry->flags = map->m_flags;
1542 __entry->ret = ret; 1544 __entry->ret = ret;
1543 ), 1545 ),
1544 1546
1545 TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u ret %d", 1547 TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u flags %x ret %d",
1546 MAJOR(__entry->dev), MINOR(__entry->dev), 1548 MAJOR(__entry->dev), MINOR(__entry->dev),
1547 (unsigned long) __entry->ino, 1549 (unsigned long) __entry->ino,
1548 __entry->lblk, __entry->pblk, 1550 __entry->lblk, __entry->pblk,
1549 __entry->len, __entry->ret) 1551 __entry->len, __entry->flags, __entry->ret)
1550); 1552);
1551 1553
1552DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit, 1554DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
1553 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1555 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
1554 ext4_fsblk_t pblk, unsigned len, int ret),
1555 1556
1556 TP_ARGS(inode, lblk, pblk, len, ret) 1557 TP_ARGS(inode, map, ret)
1557); 1558);
1558 1559
1559DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit, 1560DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
1560 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, 1561 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
1561 ext4_fsblk_t pblk, unsigned len, int ret),
1562 1562
1563 TP_ARGS(inode, lblk, pblk, len, ret) 1563 TP_ARGS(inode, map, ret)
1564); 1564);
1565 1565
1566TRACE_EVENT(ext4_ext_load_extent, 1566TRACE_EVENT(ext4_ext_load_extent,
@@ -1680,10 +1680,10 @@ DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1680); 1680);
1681 1681
1682TRACE_EVENT(ext4_ext_handle_uninitialized_extents, 1682TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
1683 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, 1683 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
1684 unsigned int allocated, ext4_fsblk_t newblock), 1684 unsigned int allocated, ext4_fsblk_t newblock),
1685 1685
1686 TP_ARGS(inode, map, allocated, newblock), 1686 TP_ARGS(inode, map, flags, allocated, newblock),
1687 1687
1688 TP_STRUCT__entry( 1688 TP_STRUCT__entry(
1689 __field( dev_t, dev ) 1689 __field( dev_t, dev )
@@ -1699,7 +1699,7 @@ TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
1699 TP_fast_assign( 1699 TP_fast_assign(
1700 __entry->dev = inode->i_sb->s_dev; 1700 __entry->dev = inode->i_sb->s_dev;
1701 __entry->ino = inode->i_ino; 1701 __entry->ino = inode->i_ino;
1702 __entry->flags = map->m_flags; 1702 __entry->flags = flags;
1703 __entry->lblk = map->m_lblk; 1703 __entry->lblk = map->m_lblk;
1704 __entry->pblk = map->m_pblk; 1704 __entry->pblk = map->m_pblk;
1705 __entry->len = map->m_len; 1705 __entry->len = map->m_len;
@@ -1707,7 +1707,7 @@ TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
1707 __entry->newblk = newblock; 1707 __entry->newblk = newblock;
1708 ), 1708 ),
1709 1709
1710 TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %d" 1710 TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %x "
1711 "allocated %d newblock %llu", 1711 "allocated %d newblock %llu",
1712 MAJOR(__entry->dev), MINOR(__entry->dev), 1712 MAJOR(__entry->dev), MINOR(__entry->dev),
1713 (unsigned long) __entry->ino, 1713 (unsigned long) __entry->ino,
@@ -2055,6 +2055,106 @@ TRACE_EVENT(ext4_ext_remove_space_done,
2055 (unsigned short) __entry->eh_entries) 2055 (unsigned short) __entry->eh_entries)
2056); 2056);
2057 2057
2058TRACE_EVENT(ext4_es_insert_extent,
2059 TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len),
2060
2061 TP_ARGS(inode, start, len),
2062
2063 TP_STRUCT__entry(
2064 __field( dev_t, dev )
2065 __field( ino_t, ino )
2066 __field( loff_t, start )
2067 __field( loff_t, len )
2068 ),
2069
2070 TP_fast_assign(
2071 __entry->dev = inode->i_sb->s_dev;
2072 __entry->ino = inode->i_ino;
2073 __entry->start = start;
2074 __entry->len = len;
2075 ),