Lines Matching refs:rtg

70 	struct xfs_rtgroup	*rtg,  in xfs_zone_account_reclaimable()  argument
73 struct xfs_group *xg = &rtg->rtg_group; in xfs_zone_account_reclaimable()
74 struct xfs_mount *mp = rtg_mount(rtg); in xfs_zone_account_reclaimable()
76 uint32_t used = rtg_rmap(rtg)->i_used_blocks; in xfs_zone_account_reclaimable()
77 xfs_rgnumber_t rgno = rtg_rgno(rtg); in xfs_zone_account_reclaimable()
80 bool was_full = (used + freed == rtg_blocks(rtg)); in xfs_zone_account_reclaimable()
96 trace_xfs_zone_emptied(rtg); in xfs_zone_account_reclaimable()
141 struct xfs_rtgroup *rtg = oz->oz_rtg; in xfs_open_zone_mark_full() local
142 struct xfs_mount *mp = rtg_mount(rtg); in xfs_open_zone_mark_full()
144 uint32_t used = rtg_rmap(rtg)->i_used_blocks; in xfs_open_zone_mark_full()
146 trace_xfs_zone_full(rtg); in xfs_open_zone_mark_full()
148 WRITE_ONCE(rtg->rtg_open_zone, NULL); in xfs_open_zone_mark_full()
162 if (used < rtg_blocks(rtg)) in xfs_open_zone_mark_full()
163 xfs_zone_account_reclaimable(rtg, rtg_blocks(rtg) - used); in xfs_open_zone_mark_full()
174 struct xfs_rtgroup *rtg = oz->oz_rtg; in xfs_zone_record_blocks() local
175 struct xfs_inode *rmapip = rtg_rmap(rtg); in xfs_zone_record_blocks()
179 xfs_rtgroup_lock(rtg, XFS_RTGLOCK_RMAP); in xfs_zone_record_blocks()
180 xfs_rtgroup_trans_join(tp, rtg, XFS_RTGLOCK_RMAP); in xfs_zone_record_blocks()
182 ASSERT(rmapip->i_used_blocks <= rtg_blocks(rtg)); in xfs_zone_record_blocks()
184 if (oz->oz_written == rtg_blocks(rtg)) in xfs_zone_record_blocks()
199 struct xfs_rtgroup *rtg = oz->oz_rtg; in xfs_zone_skip_blocks() local
203 xfs_rtgroup_lock(rtg, XFS_RTGLOCK_RMAP); in xfs_zone_skip_blocks()
205 if (oz->oz_written == rtg_blocks(rtg)) in xfs_zone_skip_blocks()
207 xfs_rtgroup_unlock(rtg, XFS_RTGLOCK_RMAP); in xfs_zone_skip_blocks()
209 xfs_add_frextents(rtg_mount(rtg), len); in xfs_zone_skip_blocks()
343 struct xfs_rtgroup *rtg, in xfs_zone_free_blocks() argument
348 struct xfs_inode *rmapip = rtg_rmap(rtg); in xfs_zone_free_blocks()
357 xfs_rtginode_mark_sick(rtg, XFS_RTGI_RMAP); in xfs_zone_free_blocks()
362 trace_xfs_zone_free_blocks(rtg, xfs_rtb_to_rgbno(mp, fsbno), len); in xfs_zone_free_blocks()
370 if (!READ_ONCE(rtg->rtg_open_zone)) in xfs_zone_free_blocks()
371 xfs_zone_account_reclaimable(rtg, len); in xfs_zone_free_blocks()
388 struct xfs_rtgroup *rtg = NULL; in xfs_last_used_zone() local
401 rtg = xfs_rtgroup_grab(mp, xfs_rtb_to_rgno(mp, got.br_startblock)); in xfs_last_used_zone()
402 if (!rtg) in xfs_last_used_zone()
405 xfs_ilock(rtg_rmap(rtg), XFS_ILOCK_SHARED); in xfs_last_used_zone()
406 oz = READ_ONCE(rtg->rtg_open_zone); in xfs_last_used_zone()
409 xfs_iunlock(rtg_rmap(rtg), XFS_ILOCK_SHARED); in xfs_last_used_zone()
411 xfs_rtgroup_rele(rtg); in xfs_last_used_zone()
442 struct xfs_rtgroup *rtg, in xfs_init_open_zone() argument
452 oz->oz_rtg = rtg; in xfs_init_open_zone()
465 WRITE_ONCE(rtg->rtg_open_zone, oz); in xfs_init_open_zone()
755 struct xfs_rtgroup *rtg = oz->oz_rtg; in xfs_zone_alloc_blocks() local
756 struct xfs_mount *mp = rtg_mount(rtg); in xfs_zone_alloc_blocks()
761 (xfs_filblks_t)rtg_blocks(rtg) - oz->oz_allocated); in xfs_zone_alloc_blocks()
772 *sector = xfs_gbno_to_daddr(&rtg->rtg_group, 0); in xfs_zone_alloc_blocks()
990 struct xfs_rtgroup *rtg, in xfs_zone_rgbno_is_valid() argument
993 lockdep_assert_held(&rtg_rmap(rtg)->i_lock); in xfs_zone_rgbno_is_valid()
995 if (rtg->rtg_open_zone) in xfs_zone_rgbno_is_valid()
996 return rgbno < rtg->rtg_open_zone->oz_allocated; in xfs_zone_rgbno_is_valid()
997 return !xa_get_mark(&rtg_mount(rtg)->m_groups[XG_TYPE_RTG].xa, in xfs_zone_rgbno_is_valid()
998 rtg_rgno(rtg), XFS_RTG_FREE); in xfs_zone_rgbno_is_valid()
1025 struct xfs_rtgroup *rtg, in xfs_init_zone() argument
1028 struct xfs_mount *mp = rtg_mount(rtg); in xfs_init_zone()
1030 uint32_t used = rtg_rmap(rtg)->i_used_blocks; in xfs_init_zone()
1034 if (zone && !xfs_zone_validate(zone, rtg, &write_pointer)) in xfs_init_zone()
1050 xfs_rtgroup_lock(rtg, XFS_RTGLOCK_RMAP); in xfs_init_zone()
1051 highest_rgbno = xfs_rtrmap_highest_rgbno(rtg); in xfs_init_zone()
1056 xfs_rtgroup_unlock(rtg, XFS_RTGLOCK_RMAP); in xfs_init_zone()
1064 if (write_pointer == rtg_blocks(rtg) && used == 0) { in xfs_init_zone()
1065 error = xfs_zone_gc_reset_sync(rtg); in xfs_init_zone()
1074 xfs_group_set_mark(&rtg->rtg_group, XFS_RTG_FREE); in xfs_init_zone()
1075 iz->available += rtg_blocks(rtg); in xfs_init_zone()
1076 } else if (write_pointer < rtg_blocks(rtg)) { in xfs_init_zone()
1080 atomic_inc(&rtg_group(rtg)->xg_active_ref); in xfs_init_zone()
1081 oz = xfs_init_open_zone(rtg, write_pointer, WRITE_LIFE_NOT_SET, in xfs_init_zone()
1086 iz->available += (rtg_blocks(rtg) - write_pointer); in xfs_init_zone()
1088 } else if (used < rtg_blocks(rtg)) { in xfs_init_zone()
1090 xfs_zone_account_reclaimable(rtg, rtg_blocks(rtg) - used); in xfs_init_zone()
1091 iz->reclaimable += (rtg_blocks(rtg) - used); in xfs_init_zone()
1107 struct xfs_rtgroup *rtg; in xfs_get_zone_info_cb() local
1116 rtg = xfs_rtgroup_grab(mp, rgno); in xfs_get_zone_info_cb()
1117 if (!rtg) { in xfs_get_zone_info_cb()
1121 error = xfs_init_zone(iz, rtg, zone); in xfs_get_zone_info_cb()
1122 xfs_rtgroup_rele(rtg); in xfs_get_zone_info_cb()
1304 struct xfs_rtgroup *rtg = NULL; in xfs_mount_zones() local
1306 while ((rtg = xfs_rtgroup_next(mp, rtg))) { in xfs_mount_zones()
1307 error = xfs_init_zone(&iz, rtg, NULL); in xfs_mount_zones()