Re: [PATCH v4 5/6] scsi: core: Protect host state changes with the host lock
Marco Elver <[email protected]> Tue, 4 Aug 2026 11:16:49 +0200
| Newsgroups | gmane.linux.scsi |
|---|---|
| Message-ID | <CANpmjNPuWgdoGzGvbJGy-rt+J3sNTffocp4sKR+auQhoHh=e_w@mail.gmail.com> |
On Mon, 3 Aug 2026 at 19:11, Bart Van Assche <[email protected]> wrote: > > On 8/3/26 10:01 AM, John Garry wrote: > > On 31/07/2026 22:52, Bart Van Assche wrote: > >> @@ -411,8 +413,8 @@ struct Scsi_Host *scsi_host_alloc(const struct > >> scsi_host_template *sht, int priv > >> return NULL; > >> shost->host_lock = &shost->default_lock; > >> - spin_lock_init(shost->host_lock); > >> - shost->shost_state = SHOST_CREATED; > >> + scoped_guard(spinlock_init, shost->host_lock) > > > > Please forgive my ignorance, but what does spinlock_init do here in > > relation to setting shost->shost_state? > > > > Elsewhere we have scoped_guard(spinlock_irq, shost->host_lock) for > > protecting setting shost->shost_state and this makes sense to me. > > However I am curious what scoped_guard(spinlock_init, ...) does. > > Support for scoped_guard(*_init, ...) and guard(*_init)(...) was > introduced in January of this year. My understanding of commit > d084a73714f8 ("compiler-context-analysis: Introduce scoped init guards") > is as follows: > * The referenced synchronization object is initialized. In this case > that means calling spinlock_init(shost->host_lock). > * Compiler warnings triggered by __guarded_by() are suppressed for the > referenced synchronization object. In this case, the compiler is told > not to assume that shost->host_lock is acquired at the start of the > guarded code block and released at the end of the guarded code block. > > Marco, please correct me if I got this wrong. Right - documentation also summarizes this: https://docs.kernel.org/next/dev-tools/context-analysis.html#supported-kernel-primitives