[sle-beta] Heads up if you use openafs at all

Mel Gorman mgorman at suse.com
Wed Nov 8 02:21:22 MST 2017


On Wed, Nov 08, 2017 at 02:05:58AM +0000, Mike Marion wrote:
> ...or anything else that has a kernel module and calls
> page_cache_alloc_cold
> 
> I tried, in vain, to build openafs on Beta1.. it turns out Suse has
> patched out the page_cache_alloc_cold function from the kernel.  See
> patch file suse/patches.suse/mm-remove-__GFP_COLD.patch (or link
> http://lkml.kernel.org/r/20171018075952.10627-9-mgorman@techsingularity.net)
> 
> The reasoning and such makes sense, but it's not in mainline yet so
> anything out there with kernel modules that you're used to building that
> requires this, isn't going to build.
> 

Hi Mike,

Ultimately, we expect drivers using the function to convert as the
patches in question are expected to be included in 4.15. There are
numerous potential workarounds. One could add a simple

#define page_cache_alloc_cold(x) page_cache_alloc(x)

to one of the headers of the affected out-of-tree module until it can
detect the presense of the API. Another is to apply the patch below to the
local kernel headers. It'll trigger a deprecated warning encourging driver
authors to convert. If this is a persistent problem, I can merge the patch
to SLE-15 which we can carry for at least one release. I hope this helps

diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 18b022823b47..7130c4213e05 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -214,6 +214,12 @@ static inline struct page *page_cache_alloc(struct address_space *x)
 	return __page_cache_alloc(mapping_gfp_mask(x));
 }
 
+static inline __deprecated
+struct page *page_cache_alloc_cold(struct address_space *x)
+{
+	return page_cache_alloc(x);
+}
+
 static inline gfp_t readahead_gfp_mask(struct address_space *x)
 {
 	return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN;

-- 
Mel Gorman
SUSE Labs


More information about the sle-beta mailing list