> On Feb 13, 2023, at 3:23 PM, Jeff Layton <jlayton@xxxxxxxxxx> wrote: > > There's no reason to delay reaping an nfsd_file just because its > underlying inode is still under writeback. nfsd just relies on client > activity or the local flusher threads to do writeback. > > Holding the file open does nothing to facilitate that, nor does it help > with tracking errors. Just allow it to close and let the kernel do > writeback as it normally would. > > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> Thanks! Applied to topic-filecache-cleanups. > --- > fs/nfsd/filecache.c | 22 ---------------------- > 1 file changed, 22 deletions(-) > > diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > index e6617431df7c..3b9a10378c83 100644 > --- a/fs/nfsd/filecache.c > +++ b/fs/nfsd/filecache.c > @@ -296,19 +296,6 @@ nfsd_file_free(struct nfsd_file *nf) > call_rcu(&nf->nf_rcu, nfsd_file_slab_free); > } > > -static bool > -nfsd_file_check_writeback(struct nfsd_file *nf) > -{ > - struct file *file = nf->nf_file; > - struct address_space *mapping; > - > - if (!file || !(file->f_mode & FMODE_WRITE)) > - return false; > - mapping = file->f_mapping; > - return mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) || > - mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK); > -} > - > static bool nfsd_file_lru_add(struct nfsd_file *nf) > { > set_bit(NFSD_FILE_REFERENCED, &nf->nf_flags); > @@ -438,15 +425,6 @@ nfsd_file_lru_cb(struct list_head *item, struct list_lru_one *lru, > /* We should only be dealing with GC entries here */ > WARN_ON_ONCE(!test_bit(NFSD_FILE_GC, &nf->nf_flags)); > > - /* > - * Don't throw out files that are still undergoing I/O or > - * that have uncleared errors pending. > - */ > - if (nfsd_file_check_writeback(nf)) { > - trace_nfsd_file_gc_writeback(nf); > - return LRU_SKIP; > - } > - > /* If it was recently added to the list, skip it */ > if (test_and_clear_bit(NFSD_FILE_REFERENCED, &nf->nf_flags)) { > trace_nfsd_file_gc_referenced(nf); > -- > 2.39.1 > -- Chuck Lever