From: Brian Behlendorf Date: Fri, 31 Jul 2009 19:44:34 +0000 (-0700) Subject: Required missing symbols for FC11 kernels (2.6.29.4-167.fc11.x86_64) X-Git-Tag: spl-0.4.5~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=16f4a92c1019229c50d43adcc9141eb46a75f20d;p=spl Required missing symbols for FC11 kernels (2.6.29.4-167.fc11.x86_64) --- diff --git a/patches/fc11-spl-export-symbols.patch b/patches/fc11-spl-export-symbols.patch new file mode 100644 index 0000000..726aabd --- /dev/null +++ b/patches/fc11-spl-export-symbols.patch @@ -0,0 +1,94 @@ +Required missing symbols for FC11 kernels (2.6.29.4-167.fc11.x86_64) + +* get_vmalloc_info() +There is no clean API in the kernel for modules to check the virtual +memory state of the system. This information is available in user +space under /proc/meminfo and the details for every virtual memory +node are available under /proc/vmallocinfo. + +* groups_search() +This support is easily replicated if the symbol is not provided by the +kernel. However exporting the symbol from the kernel is preferable. +This is required by the solaris credential API. + +* task_curr() +This symbol is used by the solaris adaptive mutex implementation. If +unavailable then all solaris mutexs behave strictly like linux style +semaphones. If available then the mutex may spin for a short while, +rather than sleep, if the holder of the lock is currently executing. + +* first_online_pgdat() +* next_online_pgdat() +* next_zone() +Required helper functions for the zone iterators for_each_zone() and +for_each_populated_zone(). These symbols were previously available +in 2.6.17 kernels, marked unused in 2.6.18 kernels, and removed as +of the 2.6.19 kernel series. The information is available in user +space under /proc/zoneinfo. + +diff --git a/fs/proc/mmu.c b/fs/proc/mmu.c +index 8ae221d..081c7b5 100644 +--- a/fs/proc/mmu.c ++++ b/fs/proc/mmu.c +@@ -58,3 +58,4 @@ void get_vmalloc_info(struct vmalloc_info *vmi) + read_unlock(&vmlist_lock); + } + } ++EXPORT_SYMBOL(get_vmalloc_info); +diff --git a/kernel/groups.c b/kernel/groups.c +index 2b45b2e..24b62f8 100644 +--- a/kernel/groups.c ++++ b/kernel/groups.c +@@ -153,6 +153,7 @@ int groups_search(const struct group_info *group_info, gid_t grp) + } + return 0; + } ++EXPORT_SYMBOL(groups_search); + + /** + * set_groups - Change a group subscription in a set of credentials +diff --git a/kernel/sched.c b/kernel/sched.c +index 1b59e26..8728c52 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -1883,10 +1883,11 @@ static void deactivate_task(struct rq *rq, struct task_struct *p, int sleep) + * task_curr - is this task currently executing on a CPU? + * @p: the task in question. + */ +-inline int task_curr(const struct task_struct *p) ++task_curr(const struct task_struct *p) + { + return cpu_curr(task_cpu(p)) == p; + } ++EXPORT_SYMBOL(task_curr); + + static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu) + { +diff --git a/mm/mmzone.c b/mm/mmzone.c +index f5b7d17..1468a22 100644 +--- a/mm/mmzone.c ++++ b/mm/mmzone.c +@@ -14,6 +14,7 @@ struct pglist_data *first_online_pgdat(void) + { + return NODE_DATA(first_online_node); + } ++EXPORT_SYMBOL(first_online_pgdat); + + struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) + { +@@ -23,6 +24,7 @@ struct pglist_data *next_online_pgdat(struct pglist_data *pgdat) + return NULL; + return NODE_DATA(nid); + } ++EXPORT_SYMBOL(next_online_pgdat); + + /* + * next_zone - helper magic for for_each_zone() +@@ -42,6 +44,7 @@ struct zone *next_zone(struct zone *zone) + } + return zone; + } ++EXPORT_SYMBOL(next_zone); + + static inline int zref_in_nodemask(struct zoneref *zref, nodemask_t *nodes) + {