From: Shaun Tancheff Date: Thu, 2 Feb 2023 09:17:25 +0000 (-0800) Subject: LU-16113 build: Fix configure tests for lock_page_memcg X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=37619ef6b28d885999951039ef95b62cd5fea467;p=fs%2Flustre-release.git LU-16113 build: Fix configure tests for lock_page_memcg Linux commit v5.15-12273-gab2f9d2d3626 mm: unexport {,un}lock_page_memcg Fails when lock_page_memcg exists but is not exported. Adjust usage of [un]lock_page_memcg() to vvp_[un]lock_page_memcg() and define the mapping accordingly to avoid the compile error. Lustre-change: https://review.whamcloud.com/49144 Lustre-commit: 61e83a6f13064aa9ae0d0e8ce8244493bad1f1bd Test-Parameters: trivial HPE-bug-id: LUS-11189 Signed-off-by: Shaun Tancheff Change-Id: I18029d078a00a0b21a14721bcdf953939b4118a1 Reviewed-by: Jian Yu Reviewed-by: Petros Koutoupis Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/49857 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Yang Sheng Reviewed-by: Andreas Dilger --- diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 63245e7..2ef5b50 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -1619,7 +1619,9 @@ EXTRA_KCFLAGS="$tmp_flags" # # LC_LOCK_PAGE_MEMCG # -# Kernel version 4.6 adds lock_page_memcg +# Kernel version 4.6 adds lock_page_memcg(page) +# Linux commit v5.15-12273-gab2f9d2d3626 +# mm: unexport {,un}lock_page_memcg # AC_DEFUN([LC_LOCK_PAGE_MEMCG], [ LB_CHECK_COMPILE([if 'lock_page_memcg' is defined], diff --git a/lustre/include/lustre_compat.h b/lustre/include/lustre_compat.h index 577a81d..c02ffd2 100644 --- a/lustre/include/lustre_compat.h +++ b/lustre/include/lustre_compat.h @@ -432,9 +432,18 @@ static inline struct timespec current_time(struct inode *inode) #define ll_xa_unlock_irqrestore(lockp, flags) spin_unlock_irqrestore(lockp, flags) #endif -#ifndef HAVE_LOCK_PAGE_MEMCG -#define lock_page_memcg(page) do {} while (0) -#define unlock_page_memcg(page) do {} while (0) +/* Linux commit v5.15-12273-gab2f9d2d3626 + * mm: unexport {,un}lock_page_memcg + * + * Note that the functions are still defined or declared breaking + * the simple approach of just defining the missing functions here + */ +#ifdef HAVE_LOCK_PAGE_MEMCG +#define vvp_lock_page_memcg(page) lock_page_memcg((page)) +#define vvp_unlock_page_memcg(page) unlock_page_memcg((page)) +#else +#define vvp_lock_page_memcg(page) +#define vvp_unlock_page_memcg(page) #endif #ifndef KMEM_CACHE_USERCOPY diff --git a/lustre/llite/vvp_io.c b/lustre/llite/vvp_io.c index 338f9f7..d548693 100644 --- a/lustre/llite/vvp_io.c +++ b/lustre/llite/vvp_io.c @@ -1051,12 +1051,12 @@ void vvp_set_pagevec_dirty(struct pagevec *pvec) ClearPageReclaim(page); - lock_page_memcg(page); + vvp_lock_page_memcg(page); if (TestSetPageDirty(page)) { /* page is already dirty .. no extra work needed * set a flag for the i'th page to be skipped */ - unlock_page_memcg(page); + vvp_unlock_page_memcg(page); skip_pages |= (1 << i); } } @@ -1084,7 +1084,7 @@ void vvp_set_pagevec_dirty(struct pagevec *pvec) WARN_ON_ONCE(!PagePrivate(page) && !PageUptodate(page)); ll_account_page_dirtied(page, mapping); dirtied++; - unlock_page_memcg(page); + vvp_unlock_page_memcg(page); } ll_xa_unlock_irqrestore(&mapping->i_pages, flags);