Re: [PATCH v1 07/12] f2fs: cache: use node cache

From: Wenjie Qi

Date: Mon Aug 24 2026 - 04:59:55 EST


Yes, that is the race I meant.

On Mon, Aug 24, 2026 at 3:13 PM Chao Yu <chao@xxxxxxxxxx> wrote:
>
> On 8/23/26 20:57, Wenjie Qi wrote:
> > Hi Chao,
> >
> >> entry = fn->entry;
> >> f2fs_cache_get(entry);
> >> spin_unlock_irqrestore(&sbi->fsync_node_lock, flags);
> >>
> >> f2fs_cache_wait_writeback(entry);
> >
> > The entry reference keeps the entry allocated, but the waiter does not hold
> > the entry lock. After WRITEBACK is cleared, invalidation can detach the
> > entry and set `entry->cache` to NULL. `f2fs_cache_wait_writeback()` checks
> > and uses `entry->cache` through separate accesses.
> >
> > Does the reference taken here also guarantee that the parent cache remains
> > attached across the wait helper's check and use?
>
> Do you mean race like this?
>
> - f2fs_wait_on_node_caches_writeback
> - f2fs_cache_get
> - f2fs_cache_wait_writeback
> - checked entry->cache, it's valid
> - f2fs_truncate_cache
> - f2fs_do_truncate_cache
> - entry->cache = NULL
> - f2fs_cache_wait_writeback_cond accesses
> invalid entry->cache
>
> Thanks,