diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_trace.h | 53 | ||||
-rw-r--r-- | fs/xfs/xfs_dfrag.c | 5 |
2 files changed, 58 insertions, 0 deletions
diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index c22a608321a3..3353aef50530 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h | |||
@@ -1414,6 +1414,59 @@ TRACE_EVENT(xfs_dir2_leafn_moveents, | |||
1414 | __entry->count) | 1414 | __entry->count) |
1415 | ); | 1415 | ); |
1416 | 1416 | ||
1417 | #define XFS_SWAPEXT_INODES \ | ||
1418 | { 0, "target" }, \ | ||
1419 | { 1, "temp" } | ||
1420 | |||
1421 | #define XFS_INODE_FORMAT_STR \ | ||
1422 | { 0, "invalid" }, \ | ||
1423 | { 1, "local" }, \ | ||
1424 | { 2, "extent" }, \ | ||
1425 | { 3, "btree" } | ||
1426 | |||
1427 | DECLARE_EVENT_CLASS(xfs_swap_extent_class, | ||
1428 | TP_PROTO(struct xfs_inode *ip, int which), | ||
1429 | TP_ARGS(ip, which), | ||
1430 | TP_STRUCT__entry( | ||
1431 | __field(dev_t, dev) | ||
1432 | __field(int, which) | ||
1433 | __field(xfs_ino_t, ino) | ||
1434 | __field(int, format) | ||
1435 | __field(int, nex) | ||
1436 | __field(int, max_nex) | ||
1437 | __field(int, broot_size) | ||
1438 | __field(int, fork_off) | ||
1439 | ), | ||
1440 | TP_fast_assign( | ||
1441 | __entry->dev = VFS_I(ip)->i_sb->s_dev; | ||
1442 | __entry->which = which; | ||
1443 | __entry->ino = ip->i_ino; | ||
1444 | __entry->format = ip->i_d.di_format; | ||
1445 | __entry->nex = ip->i_d.di_nextents; | ||
1446 | __entry->max_nex = ip->i_df.if_ext_max; | ||
1447 | __entry->broot_size = ip->i_df.if_broot_bytes; | ||
1448 | __entry->fork_off = XFS_IFORK_BOFF(ip); | ||
1449 | ), | ||
1450 | TP_printk("dev %d:%d ino 0x%llx (%s), %s format, num_extents %d, " | ||
1451 | "Max in-fork extents %d, broot size %d, fork offset %d", | ||
1452 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1453 | __entry->ino, | ||
1454 | __print_symbolic(__entry->which, XFS_SWAPEXT_INODES), | ||
1455 | __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR), | ||
1456 | __entry->nex, | ||
1457 | __entry->max_nex, | ||
1458 | __entry->broot_size, | ||
1459 | __entry->fork_off) | ||
1460 | ) | ||
1461 | |||
1462 | #define DEFINE_SWAPEXT_EVENT(name) \ | ||
1463 | DEFINE_EVENT(xfs_swap_extent_class, name, \ | ||
1464 | TP_PROTO(struct xfs_inode *ip, int which), \ | ||
1465 | TP_ARGS(ip, which)) | ||
1466 | |||
1467 | DEFINE_SWAPEXT_EVENT(xfs_swap_extent_before); | ||
1468 | DEFINE_SWAPEXT_EVENT(xfs_swap_extent_after); | ||
1469 | |||
1417 | #endif /* _TRACE_XFS_H */ | 1470 | #endif /* _TRACE_XFS_H */ |
1418 | 1471 | ||
1419 | #undef TRACE_INCLUDE_PATH | 1472 | #undef TRACE_INCLUDE_PATH |
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index 84ca1cf16a1e..f25e54027d10 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c | |||
@@ -254,6 +254,9 @@ xfs_swap_extents( | |||
254 | goto out_unlock; | 254 | goto out_unlock; |
255 | } | 255 | } |
256 | 256 | ||
257 | trace_xfs_swap_extent_before(ip, 0); | ||
258 | trace_xfs_swap_extent_before(tip, 1); | ||
259 | |||
257 | /* check inode formats now that data is flushed */ | 260 | /* check inode formats now that data is flushed */ |
258 | error = xfs_swap_extents_check_format(ip, tip); | 261 | error = xfs_swap_extents_check_format(ip, tip); |
259 | if (error) { | 262 | if (error) { |
@@ -421,6 +424,8 @@ xfs_swap_extents( | |||
421 | 424 | ||
422 | error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); | 425 | error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); |
423 | 426 | ||
427 | trace_xfs_swap_extent_after(ip, 0); | ||
428 | trace_xfs_swap_extent_after(tip, 1); | ||
424 | out: | 429 | out: |
425 | kmem_free(tempifp); | 430 | kmem_free(tempifp); |
426 | return error; | 431 | return error; |