Message ID | 20240809162221.2582364-3-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/3] fuse: remove call to SetPageError | expand |
On Fri, 2024-08-09 at 17:22 +0100, Matthew Wilcox (Oracle) wrote: > part three > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > fs/fuse/file.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > index 2b5533e41a62..f39456c65ed7 100644 > --- a/fs/fuse/file.c > +++ b/fs/fuse/file.c > @@ -937,9 +937,7 @@ static void fuse_readpages_end(struct fuse_mount > *fm, struct fuse_args *args, > for (i = 0; i < ap->num_pages; i++) { > struct folio *folio = page_folio(ap->pages[i]); > > - if (!err) > - folio_mark_uptodate(folio); > - folio_unlock(folio); > + folio_end_read(folio, !err); > folio_put(folio); > } > if (ia->ff) Reverting this part is sufficient to fix the issue for me. Cheers, Jürg
On Sat, 2024-08-10 at 14:24 +0200, Jürg Billeter wrote: > On Fri, 2024-08-09 at 17:22 +0100, Matthew Wilcox (Oracle) wrote: > > part three > > > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > > --- > > fs/fuse/file.c | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > > index 2b5533e41a62..f39456c65ed7 100644 > > --- a/fs/fuse/file.c > > +++ b/fs/fuse/file.c > > @@ -937,9 +937,7 @@ static void fuse_readpages_end(struct > > fuse_mount > > *fm, struct fuse_args *args, > > for (i = 0; i < ap->num_pages; i++) { > > struct folio *folio = page_folio(ap->pages[i]); > > > > - if (!err) > > - folio_mark_uptodate(folio); > > - folio_unlock(folio); > > + folio_end_read(folio, !err); > > folio_put(folio); > > } > > if (ia->ff) > > Reverting this part is sufficient to fix the issue for me. Would it make sense to get a revert of this part (or a full revert of commit 413e8f014c8b) into mainline and also 6.10 stable if a proper fix will take more time? Cheers, Jürg
On Tue, Aug 20, 2024 at 02:57:04PM +0200, Jürg Billeter wrote: > On Sat, 2024-08-10 at 14:24 +0200, Jürg Billeter wrote: > > On Fri, 2024-08-09 at 17:22 +0100, Matthew Wilcox (Oracle) wrote: > > > part three > > > > > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > > > --- > > > fs/fuse/file.c | 4 +--- > > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > > > index 2b5533e41a62..f39456c65ed7 100644 > > > --- a/fs/fuse/file.c > > > +++ b/fs/fuse/file.c > > > @@ -937,9 +937,7 @@ static void fuse_readpages_end(struct > > > fuse_mount > > > *fm, struct fuse_args *args, > > > for (i = 0; i < ap->num_pages; i++) { > > > struct folio *folio = page_folio(ap->pages[i]); > > > > > > - if (!err) > > > - folio_mark_uptodate(folio); > > > - folio_unlock(folio); > > > + folio_end_read(folio, !err); > > > folio_put(folio); > > > } > > > if (ia->ff) > > > > Reverting this part is sufficient to fix the issue for me. > > Would it make sense to get a revert of this part (or a full revert of > commit 413e8f014c8b) into mainline and also 6.10 stable if a proper fix > will take more time? As far as I'm concerned, I've found the fix. It's just that Miklos isn't responding. On holiday, perhaps?
On Tue, 20 Aug 2024 at 15:50, Matthew Wilcox <willy@infradead.org> wrote: > > Would it make sense to get a revert of this part (or a full revert of > > commit 413e8f014c8b) into mainline and also 6.10 stable if a proper fix > > will take more time? > > As far as I'm concerned, I've found the fix. It's just that Miklos > isn't responding. On holiday, perhaps? I was, but not anymore. I'm trying to dig though the unread pile, but haven't seen your fix. Can you please point me in the right direction? Thanks, Miklos
On Thu, Aug 22, 2024 at 01:58:28PM +0200, Miklos Szeredi wrote: > On Tue, 20 Aug 2024 at 15:50, Matthew Wilcox <willy@infradead.org> wrote: > > > > Would it make sense to get a revert of this part (or a full revert of > > > commit 413e8f014c8b) into mainline and also 6.10 stable if a proper fix > > > will take more time? > > > > As far as I'm concerned, I've found the fix. It's just that Miklos > > isn't responding. On holiday, perhaps? > > I was, but not anymore. > > I'm trying to dig though the unread pile, but haven't seen your fix. > > Can you please point me in the right direction? See the other fork of this thread: > That's what I suspected was going wrong -- we're trying to end a read on > a folio that is already uptodate. Miklos, what the hell is FUSE doing > here?
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 2b5533e41a62..f39456c65ed7 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -937,9 +937,7 @@ static void fuse_readpages_end(struct fuse_mount *fm, struct fuse_args *args, for (i = 0; i < ap->num_pages; i++) { struct folio *folio = page_folio(ap->pages[i]); - if (!err) - folio_mark_uptodate(folio); - folio_unlock(folio); + folio_end_read(folio, !err); folio_put(folio); } if (ia->ff)
part three Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/fuse/file.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)