diff options
author | David Howells <dhowells@redhat.com> | 2020-10-20 09:33:45 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2021-04-23 10:17:27 +0100 |
commit | e87b03f5830ecd8ca21836d3ee48c74f8d58fa31 (patch) | |
tree | f802dd5513fa8d9e4881e6b40de1b0f660061dac /fs/afs/file.c | |
parent | 810caa3e6708ba234fc12591d84d4b46f9f05d72 (diff) | |
download | linux-stable-e87b03f5830ecd8ca21836d3ee48c74f8d58fa31.tar.gz linux-stable-e87b03f5830ecd8ca21836d3ee48c74f8d58fa31.tar.bz2 linux-stable-e87b03f5830ecd8ca21836d3ee48c74f8d58fa31.zip |
afs: Prepare for use of THPs
As a prelude to supporting transparent huge pages, use thp_size() and
similar rather than PAGE_SIZE/SHIFT.
Further, try and frame everything in terms of file positions and lengths
rather than page indices and numbers of pages.
Signed-off-by: David Howells <dhowells@redhat.com>
Tested-By: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
cc: linux-cachefs@redhat.com
cc: linux-fsdevel@vger.kernel.org
Link: https://lore.kernel.org/r/160588540227.3465195.4752143929716269062.stgit@warthog.procyon.org.uk/ # rfc
Link: https://lore.kernel.org/r/161118155821.1232039.540445038028845740.stgit@warthog.procyon.org.uk/ # rfc
Link: https://lore.kernel.org/r/161161051439.2537118.15577827510426326534.stgit@warthog.procyon.org.uk/ # v2
Link: https://lore.kernel.org/r/161340415869.1303470.6040191748634322355.stgit@warthog.procyon.org.uk/ # v3
Link: https://lore.kernel.org/r/161539559365.286939.18344613540296085269.stgit@warthog.procyon.org.uk/ # v4
Link: https://lore.kernel.org/r/161653815142.2770958.454490670311230206.stgit@warthog.procyon.org.uk/ # v5
Link: https://lore.kernel.org/r/161789098713.6155.16394227991842480300.stgit@warthog.procyon.org.uk/ # v6
Diffstat (limited to 'fs/afs/file.c')
-rw-r--r-- | fs/afs/file.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/afs/file.c b/fs/afs/file.c index f1e30b89e41c..edf21c8708a3 100644 --- a/fs/afs/file.c +++ b/fs/afs/file.c @@ -329,8 +329,8 @@ static int afs_page_filler(struct key *key, struct page *page) req->vnode = vnode; req->key = key_get(key); req->pos = (loff_t)page->index << PAGE_SHIFT; - req->len = PAGE_SIZE; - req->nr_pages = 1; + req->len = thp_size(page); + req->nr_pages = thp_nr_pages(page); req->done = afs_file_read_done; req->cleanup = afs_file_read_cleanup; @@ -574,8 +574,8 @@ undirty: trace_afs_page_dirty(vnode, tracepoint_string("undirty"), page); clear_page_dirty_for_io(page); full_invalidate: - detach_page_private(page); trace_afs_page_dirty(vnode, tracepoint_string("inval"), page); + detach_page_private(page); } /* @@ -620,8 +620,8 @@ static int afs_releasepage(struct page *page, gfp_t gfp_flags) #endif if (PagePrivate(page)) { - detach_page_private(page); trace_afs_page_dirty(vnode, tracepoint_string("rel"), page); + detach_page_private(page); } /* indicate that the page can be released */ |