On Wed, Nov 08, 2023 at 11:39:45PM -0800, Darrick J. Wong wrote: > On Thu, Nov 09, 2023 at 05:51:50AM +0100, Christoph Hellwig wrote: > > On Wed, Nov 08, 2023 at 02:52:00PM -0800, Darrick J. Wong wrote: > > > > Also, xfs people may obviously have other preferences for how to deal > > > > with the whole "now using tv_sec in the VFS inode as a 64-bit sequence > > > > number" thing, and maybe you prefer to then update my fix to this all. > > > > But that horrid casts certainly wasn't the right way to do it. > > > > > > Yeah, I can work on that for the rt modernization patchset. > > > > As someone who has just written some new code stealing this trick I > > actually have a todo list item to make this less horrible as the cast > > upset my stomache. But shame on me for not actually noticing that it > > is buggy as well (which honestly should be the standard assumption for > > casts like this). > > Dave and I started looking at this too, and came up with: For rtgroups > filesystems, what if rtpick simply rotored the rtgroups? And what if we > didn't bother persisting the rotor value, which would make this casting > nightmare go away in the long run. It's not like we persist the agi > rotors. I think we could replace it right now with an in-memory rotor like the mp->m_agfrotor. It really does not need to be persistent; the current sequence based algorithm devolves to sequential ascending block order allocation targets once the sequence number gets large enough. Further, the (somewhat) deterministic extent distribution it is trying to acheive (i.e. even distribution across the rt dev) is really only acheivable in write-once workloads. The moment we start freeing space on the rtdev, the free space is no longer uniform and does not match the pattern the sequence-based target iterates. Hence the layout the search target attempts to create is unacheivable and largely meaningless. IOWs, we may as well just use an in-memory sequence number or a random number to seed the allocation target; they will work just as well as what we have right now without the need for persistent sequence numbers. Also, I think that not updating the persistent sequence number is fine from a backwards compatibility perspective - older kernels will just use it as it does now and newer kernels will just ignore it... I say we just kill the whole sequence number in atime thing completely.... -Dave. -- Dave Chinner david@xxxxxxxxxxxxx