On Tue, Jun 17, 2025 at 12:44:57PM +0100, John Garry wrote: >> - struct xfs_groups *rgs = &mp->m_groups[XG_TYPE_RTG]; >> + struct xfs_groups *g = &mp->m_groups[type]; >> + struct xfs_buftarg *btp = type == XG_TYPE_RTG ? >> + mp->m_rtdev_targp : mp->m_ddev_targp; > > Could this be made a bit more readable? Suggestions welcome. > >> - if (rgs->blocks == 0) >> + if (g->blocks == 0) >> return 0; >> - if (mp->m_rtdev_targp && mp->m_rtdev_targp->bt_bdev_awu_min > 0) >> - return max_pow_of_two_factor(rgs->blocks); >> - return rounddown_pow_of_two(rgs->blocks); >> + if (btp && btp->bt_bdev_awu_min > 0) > > Is it actually logically possible that g->blocks != 0 and btp == NULL? > That's really a comment on the current rt handling. No. For the data device btp is never NULL, and for the RT device we reject the mount early on in this case, see xfs_rtmount_readsb and xfs_rtmount_init.