aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2012-11-12 06:53:53 -0500
committerBen Myers <bpm@sgi.com>2012-11-13 15:47:00 -0500
commitee73259b401317117e7f5d4834c270b10b12bc8e (patch)
treef5b78a4c80cb62435965fbcbc7289fd533b83dc9 /fs
parent37eb17e604ac7398bbb133c82f281475d704fff7 (diff)
xfs: add more attribute tree trace points.
Added when debugging recent attribute tree problems to more finely trace code execution through the maze of twisty passages that makes up the attr code. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Mark Tinguely <tinguely@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/xfs/xfs_attr.c18
-rw-r--r--fs/xfs/xfs_attr_leaf.c37
-rw-r--r--fs/xfs/xfs_da_btree.c6
-rw-r--r--fs/xfs/xfs_trace.h54
4 files changed, 99 insertions, 16 deletions
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c
index 0ca1f0be62d2..55bbe98e8f82 100644
--- a/fs/xfs/xfs_attr.c
+++ b/fs/xfs/xfs_attr.c
@@ -1155,6 +1155,8 @@ xfs_attr_leaf_get(xfs_da_args_t *args)
1155 struct xfs_buf *bp; 1155 struct xfs_buf *bp;
1156 int error; 1156 int error;
1157 1157
1158 trace_xfs_attr_leaf_get(args);
1159
1158 args->blkno = 0; 1160 args->blkno = 0;
1159 error = xfs_da_read_buf(args->trans, args->dp, args->blkno, -1, &bp, 1161 error = xfs_da_read_buf(args->trans, args->dp, args->blkno, -1, &bp,
1160 XFS_ATTR_FORK); 1162 XFS_ATTR_FORK);
@@ -1185,6 +1187,8 @@ xfs_attr_leaf_list(xfs_attr_list_context_t *context)
1185 int error; 1187 int error;
1186 struct xfs_buf *bp; 1188 struct xfs_buf *bp;
1187 1189
1190 trace_xfs_attr_leaf_list(context);
1191
1188 context->cursor->blkno = 0; 1192 context->cursor->blkno = 0;
1189 error = xfs_da_read_buf(NULL, context->dp, 0, -1, &bp, XFS_ATTR_FORK); 1193 error = xfs_da_read_buf(NULL, context->dp, 0, -1, &bp, XFS_ATTR_FORK);
1190 if (error) 1194 if (error)
@@ -1653,6 +1657,8 @@ xfs_attr_fillstate(xfs_da_state_t *state)
1653 xfs_da_state_blk_t *blk; 1657 xfs_da_state_blk_t *blk;
1654 int level; 1658 int level;
1655 1659
1660 trace_xfs_attr_fillstate(state->args);
1661
1656 /* 1662 /*
1657 * Roll down the "path" in the state structure, storing the on-disk 1663 * Roll down the "path" in the state structure, storing the on-disk
1658 * block number for those buffers in the "path". 1664 * block number for those buffers in the "path".
@@ -1699,6 +1705,8 @@ xfs_attr_refillstate(xfs_da_state_t *state)
1699 xfs_da_state_blk_t *blk; 1705 xfs_da_state_blk_t *blk;
1700 int level, error; 1706 int level, error;
1701 1707
1708 trace_xfs_attr_refillstate(state->args);
1709
1702 /* 1710 /*
1703 * Roll down the "path" in the state structure, storing the on-disk 1711 * Roll down the "path" in the state structure, storing the on-disk
1704 * block number for those buffers in the "path". 1712 * block number for those buffers in the "path".
@@ -1755,6 +1763,8 @@ xfs_attr_node_get(xfs_da_args_t *args)
1755 int error, retval; 1763 int error, retval;
1756 int i; 1764 int i;
1757 1765
1766 trace_xfs_attr_node_get(args);
1767
1758 state = xfs_da_state_alloc(); 1768 state = xfs_da_state_alloc();
1759 state->args = args; 1769 state->args = args;
1760 state->mp = args->dp->i_mount; 1770 state->mp = args->dp->i_mount;
@@ -1804,6 +1814,8 @@ xfs_attr_node_list(xfs_attr_list_context_t *context)
1804 int error, i; 1814 int error, i;
1805 struct xfs_buf *bp; 1815 struct xfs_buf *bp;
1806 1816
1817 trace_xfs_attr_node_list(context);
1818
1807 cursor = context->cursor; 1819 cursor = context->cursor;
1808 cursor->initted = 1; 1820 cursor->initted = 1;
1809 1821
@@ -1959,6 +1971,8 @@ xfs_attr_rmtval_get(xfs_da_args_t *args)
1959 int nmap, error, tmp, valuelen, blkcnt, i; 1971 int nmap, error, tmp, valuelen, blkcnt, i;
1960 xfs_dablk_t lblkno; 1972 xfs_dablk_t lblkno;
1961 1973
1974 trace_xfs_attr_rmtval_get(args);
1975
1962 ASSERT(!(args->flags & ATTR_KERNOVAL)); 1976 ASSERT(!(args->flags & ATTR_KERNOVAL));
1963 1977
1964 mp = args->dp->i_mount; 1978 mp = args->dp->i_mount;
@@ -2014,6 +2028,8 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
2014 xfs_dablk_t lblkno; 2028 xfs_dablk_t lblkno;
2015 int blkcnt, valuelen, nmap, error, tmp, committed; 2029 int blkcnt, valuelen, nmap, error, tmp, committed;
2016 2030
2031 trace_xfs_attr_rmtval_set(args);
2032
2017 dp = args->dp; 2033 dp = args->dp;
2018 mp = dp->i_mount; 2034 mp = dp->i_mount;
2019 src = args->value; 2035 src = args->value;
@@ -2143,6 +2159,8 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
2143 xfs_dablk_t lblkno; 2159 xfs_dablk_t lblkno;
2144 int valuelen, blkcnt, nmap, error, done, committed; 2160 int valuelen, blkcnt, nmap, error, done, committed;
2145 2161
2162 trace_xfs_attr_rmtval_remove(args);
2163
2146 mp = args->dp->i_mount; 2164 mp = args->dp->i_mount;
2147 2165
2148 /* 2166 /*
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c
index 70eec1829776..4bfc732bc9c9 100644
--- a/fs/xfs/xfs_attr_leaf.c
+++ b/fs/xfs/xfs_attr_leaf.c
@@ -57,7 +57,8 @@ STATIC int xfs_attr_leaf_create(xfs_da_args_t *args, xfs_dablk_t which_block,
57 struct xfs_buf **bpp); 57 struct xfs_buf **bpp);
58STATIC int xfs_attr_leaf_add_work(struct xfs_buf *leaf_buffer, 58STATIC int xfs_attr_leaf_add_work(struct xfs_buf *leaf_buffer,
59 xfs_da_args_t *args, int freemap_index); 59 xfs_da_args_t *args, int freemap_index);
60STATIC void xfs_attr_leaf_compact(xfs_trans_t *tp, struct xfs_buf *leaf_buffer); 60STATIC void xfs_attr_leaf_compact(struct xfs_da_args *args,
61 struct xfs_buf *leaf_buffer);
61STATIC void xfs_attr_leaf_rebalance(xfs_da_state_t *state, 62STATIC void xfs_attr_leaf_rebalance(xfs_da_state_t *state,
62 xfs_da_state_blk_t *blk1, 63 xfs_da_state_blk_t *blk1,
63 xfs_da_state_blk_t *blk2); 64 xfs_da_state_blk_t *blk2);
@@ -1071,7 +1072,7 @@ xfs_attr_leaf_add(
1071 * Compact the entries to coalesce free space. 1072 * Compact the entries to coalesce free space.
1072 * This may change the hdr->count via dropping INCOMPLETE entries. 1073 * This may change the hdr->count via dropping INCOMPLETE entries.
1073 */ 1074 */
1074 xfs_attr_leaf_compact(args->trans, bp); 1075 xfs_attr_leaf_compact(args, bp);
1075 1076
1076 /* 1077 /*
1077 * After compaction, the block is guaranteed to have only one 1078 * After compaction, the block is guaranteed to have only one
@@ -1102,6 +1103,8 @@ xfs_attr_leaf_add_work(
1102 xfs_mount_t *mp; 1103 xfs_mount_t *mp;
1103 int tmp, i; 1104 int tmp, i;
1104 1105
1106 trace_xfs_attr_leaf_add_work(args);
1107
1105 leaf = bp->b_addr; 1108 leaf = bp->b_addr;
1106 ASSERT(leaf->hdr.info.magic == cpu_to_be16(XFS_ATTR_LEAF_MAGIC)); 1109 ASSERT(leaf->hdr.info.magic == cpu_to_be16(XFS_ATTR_LEAF_MAGIC));
1107 hdr = &leaf->hdr; 1110 hdr = &leaf->hdr;
@@ -1214,15 +1217,17 @@ xfs_attr_leaf_add_work(
1214 */ 1217 */
1215STATIC void 1218STATIC void
1216xfs_attr_leaf_compact( 1219xfs_attr_leaf_compact(
1217 struct xfs_trans *trans, 1220 struct xfs_da_args *args,
1218 struct xfs_buf *bp) 1221 struct xfs_buf *bp)
1219{ 1222{
1220 xfs_attr_leafblock_t *leaf_s, *leaf_d; 1223 xfs_attr_leafblock_t *leaf_s, *leaf_d;
1221 xfs_attr_leaf_hdr_t *hdr_s, *hdr_d; 1224 xfs_attr_leaf_hdr_t *hdr_s, *hdr_d;
1222 xfs_mount_t *mp; 1225 struct xfs_trans *trans = args->trans;
1223 char *tmpbuffer; 1226 struct xfs_mount *mp = trans->t_mountp;
1227 char *tmpbuffer;
1228
1229 trace_xfs_attr_leaf_compact(args);
1224 1230
1225 mp = trans->t_mountp;
1226 tmpbuffer = kmem_alloc(XFS_LBSIZE(mp), KM_SLEEP); 1231 tmpbuffer = kmem_alloc(XFS_LBSIZE(mp), KM_SLEEP);
1227 ASSERT(tmpbuffer != NULL); 1232 ASSERT(tmpbuffer != NULL);
1228 memcpy(tmpbuffer, bp->b_addr, XFS_LBSIZE(mp)); 1233 memcpy(tmpbuffer, bp->b_addr, XFS_LBSIZE(mp));
@@ -1345,9 +1350,8 @@ xfs_attr_leaf_rebalance(xfs_da_state_t *state, xfs_da_state_blk_t *blk1,
1345 max = be16_to_cpu(hdr2->firstused) 1350 max = be16_to_cpu(hdr2->firstused)
1346 - sizeof(xfs_attr_leaf_hdr_t); 1351 - sizeof(xfs_attr_leaf_hdr_t);
1347 max -= be16_to_cpu(hdr2->count) * sizeof(xfs_attr_leaf_entry_t); 1352 max -= be16_to_cpu(hdr2->count) * sizeof(xfs_attr_leaf_entry_t);
1348 if (space > max) { 1353 if (space > max)
1349 xfs_attr_leaf_compact(args->trans, blk2->bp); 1354 xfs_attr_leaf_compact(args, blk2->bp);
1350 }
1351 1355
1352 /* 1356 /*
1353 * Move high entries from leaf1 to low end of leaf2. 1357 * Move high entries from leaf1 to low end of leaf2.
@@ -1378,9 +1382,8 @@ xfs_attr_leaf_rebalance(xfs_da_state_t *state, xfs_da_state_blk_t *blk1,
1378 max = be16_to_cpu(hdr1->firstused) 1382 max = be16_to_cpu(hdr1->firstused)
1379 - sizeof(xfs_attr_leaf_hdr_t); 1383 - sizeof(xfs_attr_leaf_hdr_t);
1380 max -= be16_to_cpu(hdr1->count) * sizeof(xfs_attr_leaf_entry_t); 1384 max -= be16_to_cpu(hdr1->count) * sizeof(xfs_attr_leaf_entry_t);
1381 if (space > max) { 1385 if (space > max)
1382 xfs_attr_leaf_compact(args->trans, blk1->bp); 1386 xfs_attr_leaf_compact(args, blk1->bp);
1383 }
1384 1387
1385 /* 1388 /*
1386 * Move low entries from leaf2 to high end of leaf1. 1389 * Move low entries from leaf2 to high end of leaf1.
@@ -1577,6 +1580,8 @@ xfs_attr_leaf_toosmall(xfs_da_state_t *state, int *action)
1577 xfs_dablk_t blkno; 1580 xfs_dablk_t blkno;
1578 struct xfs_buf *bp; 1581 struct xfs_buf *bp;
1579 1582
1583 trace_xfs_attr_leaf_toosmall(state->args);
1584
1580 /* 1585 /*
1581 * Check for the degenerate case of the block being over 50% full. 1586 * Check for the degenerate case of the block being over 50% full.
1582 * If so, it's not worth even looking to see if we might be able 1587 * If so, it's not worth even looking to see if we might be able
@@ -1702,6 +1707,8 @@ xfs_attr_leaf_remove(
1702 int tablesize, tmp, i; 1707 int tablesize, tmp, i;
1703 xfs_mount_t *mp; 1708 xfs_mount_t *mp;
1704 1709
1710 trace_xfs_attr_leaf_remove(args);
1711
1705 leaf = bp->b_addr; 1712 leaf = bp->b_addr;
1706 ASSERT(leaf->hdr.info.magic == cpu_to_be16(XFS_ATTR_LEAF_MAGIC)); 1713 ASSERT(leaf->hdr.info.magic == cpu_to_be16(XFS_ATTR_LEAF_MAGIC));
1707 hdr = &leaf->hdr; 1714 hdr = &leaf->hdr;
diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c
index 7bfb7dd334fc..c62e7e6ff50e 100644
--- a/fs/xfs/xfs_da_btree.c
+++ b/fs/xfs/xfs_da_btree.c
@@ -779,6 +779,8 @@ xfs_da_node_toosmall(xfs_da_state_t *state, int *action)
779 xfs_dablk_t blkno; 779 xfs_dablk_t blkno;
780 struct xfs_buf *bp; 780 struct xfs_buf *bp;
781 781
782 trace_xfs_da_node_toosmall(state->args);
783
782 /* 784 /*
783 * Check for the degenerate case of the block being over 50% full. 785 * Check for the degenerate case of the block being over 50% full.
784 * If so, it's not worth even looking to see if we might be able 786 * If so, it's not worth even looking to see if we might be able
@@ -900,6 +902,8 @@ xfs_da_fixhashpath(xfs_da_state_t *state, xfs_da_state_path_t *path)
900 xfs_dahash_t lasthash=0; 902 xfs_dahash_t lasthash=0;
901 int level, count; 903 int level, count;
902 904
905 trace_xfs_da_fixhashpath(state->args);
906
903 level = path->active-1; 907 level = path->active-1;
904 blk = &path->blk[ level ]; 908 blk = &path->blk[ level ];
905 switch (blk->magic) { 909 switch (blk->magic) {
@@ -1417,6 +1421,8 @@ xfs_da_path_shift(xfs_da_state_t *state, xfs_da_state_path_t *path,
1417 xfs_dablk_t blkno=0; 1421 xfs_dablk_t blkno=0;
1418 int level, error; 1422 int level, error;
1419 1423
1424 trace_xfs_da_path_shift(state->args);
1425
1420 /* 1426 /*
1421 * Roll up the Btree looking for the first block where our 1427 * Roll up the Btree looking for the first block where our
1422 * current index is not at the edge of the block. Note that 1428 * current index is not at the edge of the block. Note that
diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
index cb5234632072..2e137d4a85ae 100644
--- a/fs/xfs/xfs_trace.h
+++ b/fs/xfs/xfs_trace.h
@@ -96,6 +96,8 @@ DEFINE_ATTR_LIST_EVENT(xfs_attr_list_full);
96DEFINE_ATTR_LIST_EVENT(xfs_attr_list_add); 96DEFINE_ATTR_LIST_EVENT(xfs_attr_list_add);
97DEFINE_ATTR_LIST_EVENT(xfs_attr_list_wrong_blk); 97DEFINE_ATTR_LIST_EVENT(xfs_attr_list_wrong_blk);
98DEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound); 98DEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound);
99DEFINE_ATTR_LIST_EVENT(xfs_attr_leaf_list);
100DEFINE_ATTR_LIST_EVENT(xfs_attr_node_list);
99 101
100DECLARE_EVENT_CLASS(xfs_perag_class, 102DECLARE_EVENT_CLASS(xfs_perag_class,
101 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount, 103 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount,
@@ -1502,8 +1504,42 @@ DEFINE_DIR2_EVENT(xfs_dir2_node_replace);
1502DEFINE_DIR2_EVENT(xfs_dir2_node_removename); 1504DEFINE_DIR2_EVENT(xfs_dir2_node_removename);
1503DEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf); 1505DEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf);
1504 1506
1507DECLARE_EVENT_CLASS(xfs_attr_class,
1508 TP_PROTO(struct xfs_da_args *args),
1509 TP_ARGS(args),
1510 TP_STRUCT__entry(
1511 __field(dev_t, dev)
1512 __field(xfs_ino_t, ino)
1513 __dynamic_array(char, name, args->namelen)
1514 __field(int, namelen)
1515 __field(int, valuelen)
1516 __field(xfs_dahash_t, hashval)
1517 __field(int, op_flags)
1518 ),
1519 TP_fast_assign(
1520 __entry->dev = VFS_I(args->dp)->i_sb->s_dev;
1521 __entry->ino = args->dp->i_ino;
1522 if (args->namelen)
1523 memcpy(__get_str(name), args->name, args->namelen);
1524 __entry->namelen = args->namelen;
1525 __entry->valuelen = args->valuelen;
1526 __entry->hashval = args->hashval;
1527 __entry->op_flags = args->op_flags;
1528 ),
1529 TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d valuelen %d "
1530 "hashval 0x%x op_flags %s",
1531 MAJOR(__entry->dev), MINOR(__entry->dev),
1532 __entry->ino,
1533 __entry->namelen,
1534 __entry->namelen ? __get_str(name) : NULL,
1535 __entry->namelen,
1536 __entry->valuelen,
1537 __entry->hashval,
1538 __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS))
1539)
1540
1505#define DEFINE_ATTR_EVENT(name) \ 1541#define DEFINE_ATTR_EVENT(name) \
1506DEFINE_EVENT(xfs_da_class, name, \ 1542DEFINE_EVENT(xfs_attr_class, name, \
1507 TP_PROTO(struct xfs_da_args *args), \ 1543 TP_PROTO(struct xfs_da_args *args), \
1508 TP_ARGS(args)) 1544 TP_ARGS(args))
1509DEFINE_ATTR_EVENT(xfs_attr_sf_add); 1545DEFINE_ATTR_EVENT(xfs_attr_sf_add);
@@ -1517,10 +1553,14 @@ DEFINE_ATTR_EVENT(xfs_attr_sf_to_leaf);
1517DEFINE_ATTR_EVENT(xfs_attr_leaf_add); 1553DEFINE_ATTR_EVENT(xfs_attr_leaf_add);
1518DEFINE_ATTR_EVENT(xfs_attr_leaf_add_old); 1554DEFINE_ATTR_EVENT(xfs_attr_leaf_add_old);
1519DEFINE_ATTR_EVENT(xfs_attr_leaf_add_new); 1555DEFINE_ATTR_EVENT(xfs_attr_leaf_add_new);
1556DEFINE_ATTR_EVENT(xfs_attr_leaf_add_work);
1520DEFINE_ATTR_EVENT(xfs_attr_leaf_addname); 1557DEFINE_ATTR_EVENT(xfs_attr_leaf_addname);
1521DEFINE_ATTR_EVENT(xfs_attr_leaf_create); 1558DEFINE_ATTR_EVENT(xfs_attr_leaf_create);
1559DEFINE_ATTR_EVENT(xfs_attr_leaf_compact);
1560DEFINE_ATTR_EVENT(xfs_attr_leaf_get);
1522DEFINE_ATTR_EVENT(xfs_attr_leaf_lookup); 1561DEFINE_ATTR_EVENT(xfs_attr_leaf_lookup);
1523DEFINE_ATTR_EVENT(xfs_attr_leaf_replace); 1562DEFINE_ATTR_EVENT(xfs_attr_leaf_replace);
1563DEFINE_ATTR_EVENT(xfs_attr_leaf_remove);
1524DEFINE_ATTR_EVENT(xfs_attr_leaf_removename); 1564DEFINE_ATTR_EVENT(xfs_attr_leaf_removename);
1525DEFINE_ATTR_EVENT(xfs_attr_leaf_split); 1565DEFINE_ATTR_EVENT(xfs_attr_leaf_split);
1526DEFINE_ATTR_EVENT(xfs_attr_leaf_split_before); 1566DEFINE_ATTR_EVENT(xfs_attr_leaf_split_before);
@@ -1532,12 +1572,21 @@ DEFINE_ATTR_EVENT(xfs_attr_leaf_to_sf);
1532DEFINE_ATTR_EVENT(xfs_attr_leaf_to_node); 1572DEFINE_ATTR_EVENT(xfs_attr_leaf_to_node);
1533DEFINE_ATTR_EVENT(xfs_attr_leaf_rebalance); 1573DEFINE_ATTR_EVENT(xfs_attr_leaf_rebalance);
1534DEFINE_ATTR_EVENT(xfs_attr_leaf_unbalance); 1574DEFINE_ATTR_EVENT(xfs_attr_leaf_unbalance);
1575DEFINE_ATTR_EVENT(xfs_attr_leaf_toosmall);
1535 1576
1536DEFINE_ATTR_EVENT(xfs_attr_node_addname); 1577DEFINE_ATTR_EVENT(xfs_attr_node_addname);
1578DEFINE_ATTR_EVENT(xfs_attr_node_get);
1537DEFINE_ATTR_EVENT(xfs_attr_node_lookup); 1579DEFINE_ATTR_EVENT(xfs_attr_node_lookup);
1538DEFINE_ATTR_EVENT(xfs_attr_node_replace); 1580DEFINE_ATTR_EVENT(xfs_attr_node_replace);
1539DEFINE_ATTR_EVENT(xfs_attr_node_removename); 1581DEFINE_ATTR_EVENT(xfs_attr_node_removename);
1540 1582
1583DEFINE_ATTR_EVENT(xfs_attr_fillstate);
1584DEFINE_ATTR_EVENT(xfs_attr_refillstate);
1585
1586DEFINE_ATTR_EVENT(xfs_attr_rmtval_get);
1587DEFINE_ATTR_EVENT(xfs_attr_rmtval_set);
1588DEFINE_ATTR_EVENT(xfs_attr_rmtval_remove);
1589
1541#define DEFINE_DA_EVENT(name) \ 1590#define DEFINE_DA_EVENT(name) \
1542DEFINE_EVENT(xfs_da_class, name, \ 1591DEFINE_EVENT(xfs_da_class, name, \
1543 TP_PROTO(struct xfs_da_args *args), \ 1592 TP_PROTO(struct xfs_da_args *args), \
@@ -1556,9 +1605,12 @@ DEFINE_DA_EVENT(xfs_da_node_split);
1556DEFINE_DA_EVENT(xfs_da_node_remove); 1605DEFINE_DA_EVENT(xfs_da_node_remove);
1557DEFINE_DA_EVENT(xfs_da_node_rebalance); 1606DEFINE_DA_EVENT(xfs_da_node_rebalance);
1558DEFINE_DA_EVENT(xfs_da_node_unbalance); 1607DEFINE_DA_EVENT(xfs_da_node_unbalance);
1608DEFINE_DA_EVENT(xfs_da_node_toosmall);
1559DEFINE_DA_EVENT(xfs_da_swap_lastblock); 1609DEFINE_DA_EVENT(xfs_da_swap_lastblock);
1560DEFINE_DA_EVENT(xfs_da_grow_inode); 1610DEFINE_DA_EVENT(xfs_da_grow_inode);
1561DEFINE_DA_EVENT(xfs_da_shrink_inode); 1611DEFINE_DA_EVENT(xfs_da_shrink_inode);
1612DEFINE_DA_EVENT(xfs_da_fixhashpath);
1613DEFINE_DA_EVENT(xfs_da_path_shift);
1562 1614
1563DECLARE_EVENT_CLASS(xfs_dir2_space_class, 1615DECLARE_EVENT_CLASS(xfs_dir2_space_class,
1564 TP_PROTO(struct xfs_da_args *args, int idx), 1616 TP_PROTO(struct xfs_da_args *args, int idx),