Re: [Regression 6.1.y] From "cifs: Fix flushing, invalidation and file size with copy_file_range()"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jan 13, 2024 at 10:31:46AM +0100, Salvatore Bonaccorso wrote:
> Hi,
> 
> On Fri, Jan 12, 2024 at 11:20:53PM -0600, Steve French wrote:
> > Here is a patch similar to what David suggested.  Seems
> > straightforward fix.  See attached.
> > I did limited testing on it tonight with 6.1 (will do more tomorrow,
> > but feedback welcome) but it did fix the regression in xfstest
> > generic/001 mentioned in this thread.
> > 
> > 
> > 
> > 
> > On Fri, Jan 12, 2024 at 8:26 AM David Howells <dhowells@xxxxxxxxxx> wrote:
> > >
> > > gregkh@xxxxxxxxxxxxxxxxxxx <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > > I guess I can just revert the single commit here?  Can someone send me
> > > > the revert that I need to do so as I get it right?
> > >
> > > In cifs_flush_folio() the error check for filemap_get_folio() just needs
> > > changing to check !folio instead of IS_ERR(folio).
> > >
> > > David
> > >
> > >
> > 
> > 
> > --
> > Thanks,
> > 
> > Steve
> 
> > From ba288a873fb8ac3d1bf5563366558a905620c071 Mon Sep 17 00:00:00 2001
> > From: Steve French <stfrench@xxxxxxxxxxxxx>
> > Date: Fri, 12 Jan 2024 23:08:51 -0600
> > Subject: [PATCH] cifs: fix flushing folio regression for 6.1 backport
> > 
> > filemap_get_folio works differenty in 6.1 vs. later kernels
> > (returning NULL in 6.1 instead of an error).  Add
> > this minor correction which addresses the regression in the patch:
> >   cifs: Fix flushing, invalidation and file size with copy_file_range()
> > 
> > Suggested-by: David Howells <dhowells@xxxxxxxxxx>
> > Reported-by: Salvatore Bonaccorso <carnil@xxxxxxxxxx>
> > Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
> > ---
> >  fs/smb/client/cifsfs.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/fs/smb/client/cifsfs.c b/fs/smb/client/cifsfs.c
> > index 2e15b182e59f..ac0b7f229a23 100644
> > --- a/fs/smb/client/cifsfs.c
> > +++ b/fs/smb/client/cifsfs.c
> > @@ -1240,7 +1240,7 @@ static int cifs_flush_folio(struct inode *inode, loff_t pos, loff_t *_fstart, lo
> >  	int rc = 0;
> >  
> >  	folio = filemap_get_folio(inode->i_mapping, index);
> > -	if (IS_ERR(folio))
> > +	if ((!folio) || (IS_ERR(folio)))
> >  		return 0;
> >  
> >  	size = folio_size(folio);
> 
> I was able to test the patch with the case from the Debian bugreport
> and seems to resolve the issue. Even if late, as Greg just queued up
> already:
> 
> Tested-by: Salvatore Bonaccorso <carnil@xxxxxxxxxx>

Thanks, I've added your tested-by to the patch now.

greg k-h




[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux