On Fri, 2018-03-02 at 16:52 +0000, Trond Myklebust wrote: > On Fri, 2018-03-02 at 11:00 -0500, Scott Mayhew wrote: > > It seems that nfs_commit_inode can be called where the nfs_inode > > has > > outstanding requests and the commit lists are empty. That can lead > > to > > invalidate_complete_page2 failing due to the associated page having > > private data which in turn leads to invalidate_inode_pages2_range > > returning -EBUSY. > > > > Instead of having nfs_commit_inode exit early when the commit lists > > are > > empty, only do so if nrequests is also 0. > > > > > > I'm not seeing how this failure would happen. Is there a bug in > nfs_launder_page() and/or nfs_wb_page()? > > Ah... It looks as if do_launder_page() only checks for PageDirty(), so it won't catch the unstable write state. Can't we fix that? It looks as if all the other filesystem launder_page() handlers would be safe with a check for PageDirty || PagePrivate. -- Trond Myklebust Linux NFS client maintainer, PrimaryData trond.myklebust@xxxxxxxxxxxxxxx ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥