On 23/09/2024 13:07, Christoph Hellwig wrote:
On Mon, Sep 23, 2024 at 09:16:22AM +0100, John Garry wrote:
Outside the block allocator changes, most changes for forcealign are just
refactoring the RT big alloc unit checks. So - as you have said previously
- this so-called madness is already there. How can the sanity be improved?
As a first step by not making it worse, and that not only means not
spreading the rtextent stuff further,
I assume that refactoring rtextent into "big alloc unit" is spreading
(rtextent stuff), right? If so, what other solution? CoW?
but more importantly not introducing
additional complexities by requiring to be able to write over the
written/unwritten boundaries created by either rtextentsize > 1 or
the forcealign stuff if you actually want atomic writes.
The very original solution required a single mapping and in written
state for atomic writes. Reverting to that would save a lot of hassle in
the kernel. It just means that the user needs to manually pre-zero.
To me, yes, there are so many "if (RT)" checks and special cases in the
code, which makes a maintenance headache.
Replacing them with a different condition doesn't really make that
any better.
I am just saying that the rtextent stuff is not nice, but it is not
going away. I suppose a tiny perk is that "big alloc unit" checks are
better than "if (rt)" checks, as it makes the condition slightly more
obvious.