Hi Anna, On Wed, 2019-02-13 at 16:53 -0500, Trond Myklebust wrote: > When we fail to add the request to the I/O queue, we currently leave > it > to the caller to free the failed request. However since some of the > requests that fail are actually created by nfs_pageio_add_request() > itself, and are not passed back the caller, this leads to a leakage > issue, which can again cause page locks to leak. > > This commit addresses the leakage by freeing the created requests on > error, using desc->pg_completion_ops->error_cleanup() > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > Fixes: a7d42ddb30997 ("nfs: add mirroring support to pgio layer") > Cc: stable@xxxxxxxxxxxxxxx # v4.0+ I believe this patch should fix the page lock leak that I mentioned yesterday. The issue is that we're creating nfs_page structures as part of a page group, but then abandoning those structures to their fate. It means that the calls to nfs_page_group_sync_on_bit(req, PG_UNLOCKPAGE), nfs_page_group_sync_on_bit(req, PG_WB_END), and even nfs_page_group_sync_on_bit(req, PG_TEARDOWN) can never succeed, and so we end up leaking, page locks, page writeback locks, and nfs_page requests... Cheers Trond -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx