Whamcloud - gitweb
LU-16113 build: Fix configure tests for lock_page_memcg
authorShaun Tancheff <shaun.tancheff@hpe.com>
Thu, 2 Feb 2023 09:17:25 +0000 (01:17 -0800)
committerAndreas Dilger <adilger@whamcloud.com>
Thu, 16 Feb 2023 21:18:33 +0000 (21:18 +0000)
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 <shaun.tancheff@hpe.com>
Change-Id: I18029d078a00a0b21a14721bcdf953939b4118a1
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/49857
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/autoconf/lustre-core.m4
lustre/include/lustre_compat.h
lustre/llite/vvp_io.c

index 63245e7..2ef5b50 100644 (file)
@@ -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],
index 577a81d..c02ffd2 100644 (file)
@@ -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
index 338f9f7..d548693 100644 (file)
@@ -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);