summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorPranjal Shrivastava <praan@google.com>2026-08-14 14:32:52 +0000
committerAnna Schumaker <anna.schumaker@hammerspace.com>2026-10-05 09:46:39 -0400
commit00ba5f7320d0416a38fda4c7ab3382a2eaed996a (patch)
tree64881827c2c13d87c4065e576fa30856171868ea /include/linux
parentd91ae903f4764da43f570b8228de7ab2f79591e1 (diff)
nfs: track number of pinned pages in nfs_page
Track the number of pinned pages in nfs_page to handle unpinning correctly, ensuring that only primary requests perform the final unpinning operation, preventing subrequests from incorrectly performing unpinning on behalf of their parent requests. Add wb_nr_pinned to struct nfs_page to store the count of pinned pages owned by the request. Update request creation and cleanup helpers to initialize and use wb_nr_pinned for primary requests. Use the nfs_page_array_len() helper to calculate the number of pages spanned by a request's offset and length. Signed-off-by: Pranjal Shrivastava <praan@google.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anna Schumaker <anna.schumaker@hammerspace.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/nfs_page.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h
index fd7aafe7cb54..080fa3e23580 100644
--- a/include/linux/nfs_page.h
+++ b/include/linux/nfs_page.h
@@ -59,6 +59,7 @@ struct nfs_page {
struct nfs_page *wb_this_page; /* list of reqs for this page */
struct nfs_page *wb_head; /* head pointer for req list */
unsigned short wb_nio; /* Number of I/O attempts */
+ unsigned int wb_nr_pinned; /* Number of pinned pages */
};
struct nfs_pgio_mirror;