On Thu, Dec 01, 2022 at 07:09:54PM +0100, Andreas Gruenbacher wrote:
> Hi again,
>
> [Same thing, but with the patches split correctly this time.]
>
> we're seeing a race between journaled data writes and the shrinker on
> gfs2. What's happening is that gfs2_iomap_page_done() is called after
>
syzbot has reported an interesting issue:
INFO: task syz-executor888:3126 blocked for more than 143 seconds.
Not tainted 6.1.0-rc6-syzkaller-32662-g6d464646530f #0
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz-executor888 state:D stack:0 pid:3126
On Thu, Dec 1, 2022 at 10:30 PM Dave Chinner wrote:
> On Thu, Dec 01, 2022 at 07:09:54PM +0100, Andreas Gruenbacher wrote:
> > Hi again,
> >
> > [Same thing, but with the patches split correctly this time.]
> >
> > we're seeing a race between journaled data writes and the shrinker on
> > gfs2.
Add a folio_may_straddle_isize() helper as a replacement for
pagecache_isize_extended() when we have a locked folio.
Use the new helper in generic_write_end(), iomap_write_end(),
ext4_write_end(), and ext4_journalled_write_end().
Signed-off-by: Andreas Gruenbacher
---
fs/buffer.c|
In gfs2_iomap_folio_done(), add the modified buffer heads to the current
transaction while the folio is still locked. Otherwise, the shrinker
can come in and free them before we get to gfs2_page_add_databufs().
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/bmap.c | 7 +++
1 file changed,
Rename the iomap page_ops into folio_ops, and rename the operations
accordingly. Move looking up the folio into ->folio_prepare(), and
unlocking and putting the folio into ->folio_done(). We'll need the
added flexibility in gfs2.
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/bmap.c |
Hello,
we're seeing a race between journaled data writes and the shrinker on
gfs2. What's happening is that gfs2_iomap_page_done() is called after
the page has been unlocked, so try_to_free_buffers() can come in and
free the buffers while gfs2_iomap_page_done() is trying to add them to
the
Hi again,
[Same thing, but with the patches split correctly this time.]
we're seeing a race between journaled data writes and the shrinker on
gfs2. What's happening is that gfs2_iomap_page_done() is called after
the page has been unlocked, so try_to_free_buffers() can come in and
free the
Rename the iomap page_ops into folio_ops, and rename the operations
accordingly. Move looking up the folio into ->folio_prepare(), and
unlocking and putting the folio into ->folio_done(). We'll need the
added flexibility in gfs2.
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/bmap.c |
In gfs2_iomap_folio_done(), add the modified buffer heads to the current
transaction while the folio is still locked. Otherwise, the shrinker
can come in and free them before we get to gfs2_page_add_databufs().
Signed-off-by: Andreas Gruenbacher
---
fs/gfs2/bmap.c | 7 +++
1 file changed,
Add a folio_may_straddle_isize() helper as a replacement for
pagecache_isize_extended() when we have a locked folio.
Use the new helper in generic_write_end(), iomap_write_end(),
ext4_write_end(), and ext4_journalled_write_end().
Signed-off-by: Andreas Gruenbacher
---
fs/buffer.c|
11 matches
Mail list logo