diff mbox series

[3/3] fuse: use folio_end_read

Message ID 20240809162221.2582364-3-willy@infradead.org (mailing list archive)
State New
Headers show
Series [1/3] fuse: remove call to SetPageError | expand

Commit Message

Matthew Wilcox Aug. 9, 2024, 4:22 p.m. UTC
part three

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
 fs/fuse/file.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Jürg Billeter Aug. 10, 2024, 12:24 p.m. UTC | #1
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
Jürg Billeter Aug. 20, 2024, 12:57 p.m. UTC | #2
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
Matthew Wilcox Aug. 20, 2024, 1:50 p.m. UTC | #3
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?
Miklos Szeredi Aug. 22, 2024, 11:58 a.m. UTC | #4
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
Matthew Wilcox Aug. 22, 2024, 12:25 p.m. UTC | #5
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 mbox series

Patch

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)