From: Kairui Song <kasong@tencent.com>
page_index is needed for mixed usage of page cache and swap cache,
for pure page cache usage, the caller can just use page->index instead.
It can't be a swap cache page here, so just drop it.
Signed-off-by: Kairui Song <kasong@tencent.com>
Cc: Xiubo Li <xiubli@redhat.com>
Cc: Ilya Dryomov <idryomov@gmail.com>
Cc: Jeff Layton <jlayton@kernel.org>
Cc: ceph-devel@vger.kernel.org
---
fs/ceph/dir.c | 2 +-
fs/ceph/inode.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 0e9f56eaba1e..570a9d634cc5 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -141,7 +141,7 @@ __dcache_find_get_entry(struct dentry *parent, u64 idx,
if (ptr_pos >= i_size_read(dir))
return NULL;
- if (!cache_ctl->page || ptr_pgoff != page_index(cache_ctl->page)) {
+ if (!cache_ctl->page || ptr_pgoff != cache_ctl->page->index) {
ceph_readdir_cache_release(cache_ctl);
cache_ctl->page = find_lock_page(&dir->i_data, ptr_pgoff);
if (!cache_ctl->page) {
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index 7b2e77517f23..1f92d3faaa6b 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -1861,7 +1861,7 @@ static int fill_readdir_cache(struct inode *dir, struct dentry *dn,
unsigned idx = ctl->index % nsize;
pgoff_t pgoff = ctl->index / nsize;
- if (!ctl->page || pgoff != page_index(ctl->page)) {
+ if (!ctl->page || pgoff != ctl->page->index) {
ceph_readdir_cache_release(ctl);
if (idx == 0)
ctl->page = grab_cache_page(&dir->i_data, pgoff);
--
2.44.0
On 4/18/24 00:08, Kairui Song wrote:
> From: Kairui Song <kasong@tencent.com>
>
> page_index is needed for mixed usage of page cache and swap cache,
> for pure page cache usage, the caller can just use page->index instead.
>
> It can't be a swap cache page here, so just drop it.
>
> Signed-off-by: Kairui Song <kasong@tencent.com>
> Cc: Xiubo Li <xiubli@redhat.com>
> Cc: Ilya Dryomov <idryomov@gmail.com>
> Cc: Jeff Layton <jlayton@kernel.org>
> Cc: ceph-devel@vger.kernel.org
> ---
> fs/ceph/dir.c | 2 +-
> fs/ceph/inode.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
> index 0e9f56eaba1e..570a9d634cc5 100644
> --- a/fs/ceph/dir.c
> +++ b/fs/ceph/dir.c
> @@ -141,7 +141,7 @@ __dcache_find_get_entry(struct dentry *parent, u64 idx,
> if (ptr_pos >= i_size_read(dir))
> return NULL;
>
> - if (!cache_ctl->page || ptr_pgoff != page_index(cache_ctl->page)) {
> + if (!cache_ctl->page || ptr_pgoff != cache_ctl->page->index) {
> ceph_readdir_cache_release(cache_ctl);
> cache_ctl->page = find_lock_page(&dir->i_data, ptr_pgoff);
> if (!cache_ctl->page) {
> diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
> index 7b2e77517f23..1f92d3faaa6b 100644
> --- a/fs/ceph/inode.c
> +++ b/fs/ceph/inode.c
> @@ -1861,7 +1861,7 @@ static int fill_readdir_cache(struct inode *dir, struct dentry *dn,
> unsigned idx = ctl->index % nsize;
> pgoff_t pgoff = ctl->index / nsize;
>
> - if (!ctl->page || pgoff != page_index(ctl->page)) {
> + if (!ctl->page || pgoff != ctl->page->index) {
Hi Kairui,
Thanks for you patch and will it be doable to switch to folio_index()
instead ?
Cheers,
- Xiubo
> ceph_readdir_cache_release(ctl);
> if (idx == 0)
> ctl->page = grab_cache_page(&dir->i_data, pgoff);
On Thu, Apr 18, 2024 at 08:28:22AM +0800, Xiubo Li wrote: > Thanks for you patch and will it be doable to switch to folio_index() > instead ? No. Just use folio->index. You only need folio_index() if the folio might belong to the swapcache instead of a file.
On 4/18/24 09:30, Matthew Wilcox wrote: > On Thu, Apr 18, 2024 at 08:28:22AM +0800, Xiubo Li wrote: >> Thanks for you patch and will it be doable to switch to folio_index() >> instead ? > No. Just use folio->index. You only need folio_index() if the folio > might belong to the swapcache instead of a file. > Hmm, Okay. Thanks - Xiubo
On Thu, Apr 18, 2024 at 9:40 AM Xiubo Li <xiubli@redhat.com> wrote: > On 4/18/24 09:30, Matthew Wilcox wrote: > > On Thu, Apr 18, 2024 at 08:28:22AM +0800, Xiubo Li wrote: > >> Thanks for you patch and will it be doable to switch to folio_index() > >> instead ? > > No. Just use folio->index. You only need folio_index() if the folio > > might belong to the swapcache instead of a file. > > > Hmm, Okay. > > Thanks > > - Xiubo > Hi Xiubo Thanks for the comment, As Matthew mentioned there is no need to use folio_index unless you are access swapcache. And I found that ceph is not using folios internally yet, needs a lot of conversions. So I think I'll just keep using page->index here, later conversions may change it to folio->index.
On 4/22/24 23:34, Kairui Song wrote: > On Thu, Apr 18, 2024 at 9:40 AM Xiubo Li <xiubli@redhat.com> wrote: >> On 4/18/24 09:30, Matthew Wilcox wrote: >>> On Thu, Apr 18, 2024 at 08:28:22AM +0800, Xiubo Li wrote: >>>> Thanks for you patch and will it be doable to switch to folio_index() >>>> instead ? >>> No. Just use folio->index. You only need folio_index() if the folio >>> might belong to the swapcache instead of a file. >>> >> Hmm, Okay. >> >> Thanks >> >> - Xiubo >> > Hi Xiubo > > Thanks for the comment, > > As Matthew mentioned there is no need to use folio_index unless you > are access swapcache. And I found that ceph is not using folios > internally yet, needs a lot of conversions. So I think I'll just keep > using page->index here, later conversions may change it to > folio->index. > Sounds good to me and thanks for explaining. Cheers - Xiubo
© 2016 - 2026 Red Hat, Inc.