Loading fs/xfs/xfs_mount.c +2 −0 Original line number Diff line number Diff line Loading @@ -1341,6 +1341,7 @@ xfs_dec_freecounter( goto fdblocks_enospc; } counter->res_avail -= delta; trace_xfs_freecounter_reserved(mp, ctr, delta, _RET_IP_); spin_unlock(&mp->m_sb_lock); } Loading @@ -1348,6 +1349,7 @@ xfs_dec_freecounter( return 0; fdblocks_enospc: trace_xfs_freecounter_enospc(mp, ctr, delta, _RET_IP_); spin_unlock(&mp->m_sb_lock); return -ENOSPC; } Loading fs/xfs/xfs_trace.h +39 −0 Original line number Diff line number Diff line Loading @@ -5669,6 +5669,45 @@ TRACE_EVENT(xfs_growfs_check_rtgeom, ); #endif /* CONFIG_XFS_RT */ TRACE_DEFINE_ENUM(XC_FREE_BLOCKS); TRACE_DEFINE_ENUM(XC_FREE_RTEXTENTS); DECLARE_EVENT_CLASS(xfs_freeblocks_resv_class, TP_PROTO(struct xfs_mount *mp, enum xfs_free_counter ctr, uint64_t delta, unsigned long caller_ip), TP_ARGS(mp, ctr, delta, caller_ip), TP_STRUCT__entry( __field(dev_t, dev) __field(enum xfs_free_counter, ctr) __field(uint64_t, delta) __field(uint64_t, avail) __field(uint64_t, total) __field(unsigned long, caller_ip) ), TP_fast_assign( __entry->dev = mp->m_super->s_dev; __entry->ctr = ctr; __entry->delta = delta; __entry->avail = mp->m_free[ctr].res_avail; __entry->total = mp->m_free[ctr].res_total; __entry->caller_ip = caller_ip; ), TP_printk("dev %d:%d ctr %s delta %llu avail %llu total %llu caller %pS", MAJOR(__entry->dev), MINOR(__entry->dev), __print_symbolic(__entry->ctr, XFS_FREECOUNTER_STR), __entry->delta, __entry->avail, __entry->total, (char *)__entry->caller_ip) ) #define DEFINE_FREEBLOCKS_RESV_EVENT(name) \ DEFINE_EVENT(xfs_freeblocks_resv_class, name, \ TP_PROTO(struct xfs_mount *mp, enum xfs_free_counter ctr, \ uint64_t delta, unsigned long caller_ip), \ TP_ARGS(mp, ctr, delta, caller_ip)) DEFINE_FREEBLOCKS_RESV_EVENT(xfs_freecounter_reserved); DEFINE_FREEBLOCKS_RESV_EVENT(xfs_freecounter_enospc); #endif /* _TRACE_XFS_H */ #undef TRACE_INCLUDE_PATH Loading Loading
fs/xfs/xfs_mount.c +2 −0 Original line number Diff line number Diff line Loading @@ -1341,6 +1341,7 @@ xfs_dec_freecounter( goto fdblocks_enospc; } counter->res_avail -= delta; trace_xfs_freecounter_reserved(mp, ctr, delta, _RET_IP_); spin_unlock(&mp->m_sb_lock); } Loading @@ -1348,6 +1349,7 @@ xfs_dec_freecounter( return 0; fdblocks_enospc: trace_xfs_freecounter_enospc(mp, ctr, delta, _RET_IP_); spin_unlock(&mp->m_sb_lock); return -ENOSPC; } Loading
fs/xfs/xfs_trace.h +39 −0 Original line number Diff line number Diff line Loading @@ -5669,6 +5669,45 @@ TRACE_EVENT(xfs_growfs_check_rtgeom, ); #endif /* CONFIG_XFS_RT */ TRACE_DEFINE_ENUM(XC_FREE_BLOCKS); TRACE_DEFINE_ENUM(XC_FREE_RTEXTENTS); DECLARE_EVENT_CLASS(xfs_freeblocks_resv_class, TP_PROTO(struct xfs_mount *mp, enum xfs_free_counter ctr, uint64_t delta, unsigned long caller_ip), TP_ARGS(mp, ctr, delta, caller_ip), TP_STRUCT__entry( __field(dev_t, dev) __field(enum xfs_free_counter, ctr) __field(uint64_t, delta) __field(uint64_t, avail) __field(uint64_t, total) __field(unsigned long, caller_ip) ), TP_fast_assign( __entry->dev = mp->m_super->s_dev; __entry->ctr = ctr; __entry->delta = delta; __entry->avail = mp->m_free[ctr].res_avail; __entry->total = mp->m_free[ctr].res_total; __entry->caller_ip = caller_ip; ), TP_printk("dev %d:%d ctr %s delta %llu avail %llu total %llu caller %pS", MAJOR(__entry->dev), MINOR(__entry->dev), __print_symbolic(__entry->ctr, XFS_FREECOUNTER_STR), __entry->delta, __entry->avail, __entry->total, (char *)__entry->caller_ip) ) #define DEFINE_FREEBLOCKS_RESV_EVENT(name) \ DEFINE_EVENT(xfs_freeblocks_resv_class, name, \ TP_PROTO(struct xfs_mount *mp, enum xfs_free_counter ctr, \ uint64_t delta, unsigned long caller_ip), \ TP_ARGS(mp, ctr, delta, caller_ip)) DEFINE_FREEBLOCKS_RESV_EVENT(xfs_freecounter_reserved); DEFINE_FREEBLOCKS_RESV_EVENT(xfs_freecounter_enospc); #endif /* _TRACE_XFS_H */ #undef TRACE_INCLUDE_PATH Loading