Re: [RFC PATCH v4 12/12] iomap: Handle deadlock due to repeating folios in RWF_WRITETHROUGH

From: Ojaswin Mujoo

Date: Fri Oct 16 2026 - 03:27:24 EST


On Tue, Oct 13, 2026 at 10:40:32AM +0200, Pankaj Raghav (Samsung) wrote:
> On Mon, Sep 28, 2026 at 05:33:13PM +0530, Ojaswin Mujoo wrote:
> > In iomap_writethrough_iter() we might encounter repeating folios across
> > multiple iterations. Repeating folios can occur if, example,
> > copy_folio_from_iter_atomic() does a short copy due to userspace pages
> > not faulted in. This is an issue because a previous loop might have
> > started writeback on them but not yet issued the IO. In the next
> > iteration trying to get the same folio with FGP_STABLE will result in a
> > deadlock. Since repeating folios will always be encountered back to
> > back, we can just use a simple cur != prev check to detect them.
> >
> > Use this to avoid waiting for writeback or starting writeback on folios
> > we have already processed. Note that in ->endio() we might end up
> > calling folio_end_writethrough() twice on the same folio which can cause
> > issues with folio_xor_flags_has_waiters(). For simplicity, just change
> > the folio_xor_flags_has_waiters() call to an idempotent variant.
>
> Is this an outdated comment?

Yes, thanks. I'll change this. We just use the folio_end_writethrough()
now.
>
> >
> > Reported-by: Pankaj Raghav <pankaj.raghav@xxxxxxxxx>
>
> Thanks for fixing it. I think I was able to trigger this in a VM with
> limited memory where the chances of short copy is probably higher. The
> fixes makes sense to me.
>
> I will run some tests this week and report back if there is an issue.
>
> --
> Pankaj