On 8/18/25 12:09, Harry Yoo wrote: >> +alloc_empty: >> + local_unlock(&s->cpu_sheaves->lock); >> + >> + empty = alloc_empty_sheaf(s, GFP_NOWAIT); >> + if (empty) >> + goto got_empty; >> + >> + if (put_fail) >> + stat(s, BARN_PUT_FAIL); >> + >> + if (!sheaf_flush_main(s)) >> + return NULL; >> + >> + if (!local_trylock(&s->cpu_sheaves->lock)) >> + return NULL; >> + >> + /* >> + * we flushed the main sheaf so it should be empty now, >> + * but in case we got preempted or migrated, we need to >> + * check again >> + */ >> + if (pcs->main->size == s->sheaf_capacity) >> + goto restart; > > I think it's missing: > > pcs = this_cpu_ptr(&s->cpu_sheaves); > > between local_trylock() and reading pcs->main->size().
Oops, yes, thanks! Also fixed up the other things you pointed out.