[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHk-=whFEBjrqyV1n8cHDjYio44Tt4izKu8LdE0duTsF9b3BoQ@mail.gmail.com>
Date: Sun, 5 Oct 2025 09:35:51 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Oleg Nesterov <oleg@...hat.com>
Cc: Alexander Viro <viro@...iv.linux.org.uk>, Boqun Feng <boqun.feng@...il.com>,
David Howells <dhowells@...hat.com>, Ingo Molnar <mingo@...hat.com>,
Li RongQing <lirongqing@...du.com>, Peter Zijlstra <peterz@...radead.org>,
Waiman Long <longman@...hat.com>, Will Deacon <will@...nel.org>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/5] seqlock: introduce SEQLOCK_READ_SECTION()
On Sun, 5 Oct 2025 at 09:09, Oleg Nesterov <oleg@...hat.com> wrote:
>
> OK. But if you don't object I'd like to avoid another DEFINE_LOCK_GUARD()
> or something like it in this case. To me it won't buy anything.
Oh, absolutely. I didn't mean that you actually *use* the fancy GUARD
infrastructure we have: this code doesn't do the whole '__cleanup()'
thing at all.
I only mean that as far as users are concerned, this all looks
similar, so please use a similar interface even if from an
implementation standpoint it is very different.
> The problem is that you can't declare "int lockless/seq" and
> "unsigned long flags" inside "for (...)", but I'll try to think about
> it more.
I agree, it's an annoying limitation of the for-loop variable
declaration thing that you can only declare one type.
There's a somewhat strange solution to it, though: declare a structure
with multiple members of the types you want:
for (struct { char *a; int b; } c = {NULL, 1}; ... }
and then you use 'c.a' and 'c.b' and friends inside the loop.
It looks pretty odd, but it actually works fine and we should probably
use it more.
[ The *really* hacky solution is to just use one type and pick the
biggest type and then possibly mis-use that type.
That's effectively what you did with 'lockless': it's declared as an
'int', but it's really effectively used as a 'bool' anyway.
Of course, in that 'lockless' case it's not as noticeable, since we
often use int/bool rather interchangeably in the kernel for historical
reasons anyway, so you probably didn't think of it as a hacky solution
]
Linus
Powered by blists - more mailing lists