On Sat, Sep 30, 2023 at 12:24 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > On Fri, Sep 29, 2023 at 11:23:04PM +0200, Mateusz Guzik wrote: > > Extending struct file is not ideal by any means, but the good news is that: > > 1. there is a 4 byte hole in there, if one is fine with an int-sized counter > > 2. if one insists on 8 bytes, the struct is 232 bytes on my kernel > > (debian). still some room up to 256, so it may be tolerable? > > 256 isn't quite the magic number for slabs ... at 256 bytes, we'd get 16 > per 4kB page, but at 232 bytes we get 17 objects per 4kB page (or 35 per > 8kB pair of pages). > > That said, I thik a 32-bit counter is almost certainly sufficient. I don't like the sequence number proposal because it seems to me like it's adding one more layer of complication, but if this does happen, I very much would want that number to be 64-bit. A computer doesn't take _that_ long to count to 2^32, and especially with preemptible RCU it's kinda hard to reason about how long a task might stay in the middle of an RCU grace period. Like, are we absolutely sure that there is no pessimal case where the scheduler will not schedule a runnable cpu-pinned idle-priority task for a few minutes? Either because we hit some pessimal case in the scheduler or because the task gets preempted by something that's spinning a very long time with preemption disabled? (And yes, I know, seqlocks...)