From a0d8023d07b114af0f325997fa2786ca53c92013 Mon Sep 17 00:00:00 2001 From: Mr NeilBrown Date: Tue, 22 Aug 2023 20:18:41 -0400 Subject: [PATCH] LU-12678 lnet: discard lnet_kvaddr_to_page This function is not needed, so discard it. Change-Id: Iffe9745adf477a5f4b78d8ef191849179426cb07 Signed-off-by: Mr NeilBrown Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52041 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Timothy Day Reviewed-by: Chris Horn Reviewed-by: Oleg Drokin --- lnet/autoconf/lustre-lnet.m4 | 13 ------------- lnet/include/lnet/lib-lnet.h | 1 - lnet/lnet/lib-md.c | 40 +++++++--------------------------------- lustre/ptlrpc/client.c | 10 ++++++---- 4 files changed, 13 insertions(+), 51 deletions(-) diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 9a47cd2..4877660 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -983,17 +983,6 @@ AC_DEFUN([LN_CONFIG_SK_DATA_READY], [ ]) # LN_CONFIG_SK_DATA_READY # -# LN_EXPORT_KMAP_TO_PAGE -# -# 3.10 Export kmap_to_page -# -AC_DEFUN([LN_EXPORT_KMAP_TO_PAGE], [ -LB_CHECK_EXPORT([kmap_to_page], [mm/highmem.c], - [AC_DEFINE(HAVE_KMAP_TO_PAGE, 1, - [kmap_to_page is exported by the kernel])]) -]) # LN_EXPORT_KMAP_TO_PAGE - -# # LN_HAVE_HYPERVISOR_IS_TYPE # # 4.14 commit 79cc74155218316b9a5d28577c7077b2adba8e58 @@ -1151,8 +1140,6 @@ LN_CONFIG_BACKOFF LN_CONFIG_O2IB LN_CONFIG_GNILND LN_CONFIG_KFILND -# 3.10 - Check export -LN_EXPORT_KMAP_TO_PAGE ]) # LN_PROG_LINUX # diff --git a/lnet/include/lnet/lib-lnet.h b/lnet/include/lnet/lib-lnet.h index 3fcf86e..b95ac1d 100644 --- a/lnet/include/lnet/lib-lnet.h +++ b/lnet/include/lnet/lib-lnet.h @@ -888,7 +888,6 @@ void lnet_me_unlink(struct lnet_me *me); void lnet_md_unlink(struct lnet_libmd *md); void lnet_md_deconstruct(struct lnet_libmd *lmd, struct lnet_event *ev); -struct page *lnet_kvaddr_to_page(unsigned long vaddr); struct page *lnet_get_first_page(struct lnet_libmd *md, unsigned int offset); int lnet_cpt_of_md(struct lnet_libmd *md, unsigned int offset); diff --git a/lnet/lnet/lib-md.c b/lnet/lnet/lib-md.c index 9e200c9..9bd9e33 100644 --- a/lnet/lnet/lib-md.c +++ b/lnet/lnet/lib-md.c @@ -74,37 +74,6 @@ lnet_md_unlink(struct lnet_libmd *md) } struct page * -lnet_kvaddr_to_page(unsigned long vaddr) -{ - if (is_vmalloc_addr((void *)vaddr)) - return vmalloc_to_page((void *)vaddr); - -#ifdef CONFIG_HIGHMEM - -#ifdef HAVE_KMAP_TO_PAGE - /* - * This ifdef is added to handle the kernel versions - * which have kmap_to_page() function exported. If so, - * we should use it. Otherwise, remain with the legacy check. - */ - return kmap_to_page((void *)vaddr); -#else - - if (vaddr >= PKMAP_ADDR(0) && vaddr < PKMAP_ADDR(LAST_PKMAP)) { - /* No highmem pages only used for bulk (kiov) I/O */ - CERROR("find page for address in highmem\n"); - LBUG(); - } - return virt_to_page(vaddr); -#endif /* HAVE_KMAP_TO_PAGE */ -#else - - return virt_to_page(vaddr); -#endif /* CONFIG_HIGHMEM */ -} -EXPORT_SYMBOL(lnet_kvaddr_to_page); - -struct page * lnet_get_first_page(struct lnet_libmd *md, unsigned int offset) { unsigned int niov; @@ -239,12 +208,16 @@ lnet_md_build(const struct lnet_md *umd, int unlink) lmd->md_length = len; i = 0; while (len) { + struct page *p; int plen; + if (is_vmalloc_addr(pa)) + p = vmalloc_to_page(pa); + else + p = virt_to_page(pa); plen = min_t(int, len, PAGE_SIZE - offset_in_page(pa)); - lmd->md_kiov[i].bv_page = - lnet_kvaddr_to_page((unsigned long) pa); + lmd->md_kiov[i].bv_page = p; lmd->md_kiov[i].bv_offset = offset_in_page(pa); lmd->md_kiov[i].bv_len = plen; @@ -252,6 +225,7 @@ lnet_md_build(const struct lnet_md *umd, int unlink) pa += plen; i += 1; } + WARN(!(lmd->md_options & LNET_MD_GNILND) && i > LNET_MAX_IOV, "Max IOV exceeded: %d should be < %d\n", i, LNET_MAX_IOV); diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index 3167bf0..d0f058e 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -77,11 +77,13 @@ static int ptlrpc_prep_bulk_frag_pages(struct ptlrpc_bulk_desc *desc, while (len > 0) { int page_len = min_t(unsigned int, PAGE_SIZE - offset, len); - unsigned long vaddr = (unsigned long)frag; + struct page *p; - ptlrpc_prep_bulk_page_nopin(desc, - lnet_kvaddr_to_page(vaddr), - offset, page_len); + if (!is_vmalloc_addr(frag)) + p = virt_to_page((unsigned long)frag); + else + p = vmalloc_to_page(frag); + ptlrpc_prep_bulk_page_nopin(desc, p, offset, page_len); offset = 0; len -= page_len; frag += page_len; -- 1.8.3.1