Linux 2.6.31 Compatibility Updates

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.
This commit is contained in:
Brian Behlendorf 2009-11-10 14:06:57 -08:00
parent f97cd5fd87
commit baf2979ed3
6 changed files with 30 additions and 4 deletions

View File

@ -1266,6 +1266,7 @@ AC_DEFUN([SPL_AC_2ARGS_SET_FS_PWD],
[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);
],[

2
configure vendored
View File

@ -21871,6 +21871,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#include <linux/sched.h>
#include <linux/fs_struct.h>
int
main (void)
@ -25119,6 +25120,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#include <linux/sched.h>
#include <linux/fs_struct.h>
int
main (void)

22
include/linux/mm_compat.h Normal file
View File

@ -0,0 +1,22 @@
#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 */

View File

@ -36,7 +36,7 @@ extern "C" {
#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>

View File

@ -39,6 +39,7 @@ extern "C" {
#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>

View File

@ -1826,9 +1826,9 @@ spl_kmem_init_globals(void)
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 */