SPL_AC_2ARGS_SET_FS_PWD macro updated to explicitly include
linux/fs_struct.h which was dropped from linux/sched.h.
min_wmark_pages, low_wmark_pages, high_wmark_pages macros
introduced in newer kernels. For older kernels mm_compat.h
was introduced to define them as needed as direct mappings
to per zone min_pages, low_pages, max_pages.
[AC_MSG_CHECKING([whether set_fs_pwd() wants 2 args])
SPL_LINUX_TRY_COMPILE([
#include <linux/sched.h>
+ #include <linux/fs_struct.h>
],[
set_fs_pwd(NULL, NULL);
],[
#include <linux/sched.h>
+ #include <linux/fs_struct.h>
int
main (void)
#include <linux/sched.h>
+ #include <linux/fs_struct.h>
int
main (void)
--- /dev/null
+#ifndef _SPL_MM_COMPAT_H
+#define _SPL_MM_COMPAT_H
+
+#include <linux/mm.h>
+
+/*
+ * Linux 2.6.31 API Change.
+ * Individual pages_{min,low,high} moved in to watermark array.
+ */
+#ifndef min_wmark_pages
+#define min_wmark_pages(z) (z->pages_min)
+#endif
+
+#ifndef low_wmark_pages
+#define low_wmark_pages(z) (z->pages_low)
+#endif
+
+#ifndef high_wmark_pages
+#define high_wmark_pages(z) (z->pages_high)
+#endif
+
+#endif /* SPL_MM_COMPAT_H */
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
-#include <linux/mm.h>
+#include <linux/mm_compat.h>
#include <linux/spinlock.h>
#include <linux/rwsem.h>
#include <linux/hash.h>
#include <linux/namei.h>
#include <linux/file.h>
#include <linux/fs.h>
+#include <linux/fs_struct.h>
#include <linux/mount.h>
#include <sys/kmem.h>
#include <sys/mutex.h>
if (!populated_zone(zone))
continue;
- minfree += zone->pages_min;
- desfree += zone->pages_low;
- lotsfree += zone->pages_high;
+ minfree += min_wmark_pages(zone);
+ desfree += low_wmark_pages(zone);
+ lotsfree += high_wmark_pages(zone);
}
/* Solaris default values */