* percpu_counter_mod not getting into SMP kernel image when ext2/3 compiled as modules
@ 2003-11-10 23:30 Jeff Bowden
2003-11-11 0:40 ` Andrew Morton
0 siblings, 1 reply; 2+ messages in thread
From: Jeff Bowden @ 2003-11-10 23:30 UTC (permalink / raw)
To: linux-kernel
In 2.6.9-test9 (also tried with bk15) I have ext2 and ext3 both
configured as modules. When I do "modprobe ext3" it says:
FATAL: Error inserting ext3
(/lib/modules/2.6.0-test9-bug-t1/kernel/fs/ext3/ext3.ko): Unknown symbol
in module, or unknown parameter (see dmesg)
and dmesg says:
ext3: Unknown symbol percpu_counter_mod
I found one message in the archive
(http://www.ussg.iu.edu/hypermail/linux/kernel/0310.2/0311.html) which
mentions this problem and includes a proposed fix. The lines from the
this proposal made it into lib/percpu_counter.c but somehow it seems
that they are not causing the symbol to end up in the main kernel
image. In fact the string "percpu_counter_mod" does not occur in
vmlinux or in any of the modules other than ext2.ko and ext3.ko.
The kernel in question was compiled with gcc 3.3.1 on an up-to-date
debian/unstable. A copy of the exact .config I used can be had from
http://jlb.changelog.com/config-2.6.0-test9-bug-t1
I am not subscribed to this mailing list.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: percpu_counter_mod not getting into SMP kernel image when ext2/3 compiled as modules
2003-11-10 23:30 percpu_counter_mod not getting into SMP kernel image when ext2/3 compiled as modules Jeff Bowden
@ 2003-11-11 0:40 ` Andrew Morton
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2003-11-11 0:40 UTC (permalink / raw)
To: Jeff Bowden; +Cc: linux-kernel
Jeff Bowden <jlb@houseofdistraction.com> wrote:
>
> In 2.6.9-test9 (also tried with bk15) I have ext2 and ext3 both
> configured as modules. When I do "modprobe ext3" it says:
>
> FATAL: Error inserting ext3
> (/lib/modules/2.6.0-test9-bug-t1/kernel/fs/ext3/ext3.ko): Unknown symbol
> in module, or unknown parameter (see dmesg)
>
> and dmesg says:
>
> ext3: Unknown symbol percpu_counter_mod
You'll be needing this:
diff -puN -L lib/percpu_counter.c lib/percpu_counter.c~percpu-counter-linkage-fix /dev/null
--- 25/lib/percpu_counter.c
+++ /dev/null 2002-08-30 16:31:37.000000000 -0700
@@ -1,21 +0,0 @@
-#include <linux/module.h>
-#include <linux/percpu_counter.h>
-#include <linux/sched.h>
-
-void percpu_counter_mod(struct percpu_counter *fbc, long amount)
-{
- int cpu = get_cpu();
- long count = fbc->counters[cpu].count;
-
- count += amount;
- if (count >= FBC_BATCH || count <= -FBC_BATCH) {
- spin_lock(&fbc->lock);
- fbc->count += count;
- spin_unlock(&fbc->lock);
- count = 0;
- }
- fbc->counters[cpu].count = count;
- put_cpu();
-}
-
-EXPORT_SYMBOL(percpu_counter_mod);
diff -puN lib/Makefile~percpu-counter-linkage-fix lib/Makefile
--- 25/lib/Makefile~percpu-counter-linkage-fix 2003-11-07 20:36:48.000000000 -0800
+++ 25-akpm/lib/Makefile 2003-11-07 20:36:48.000000000 -0800
@@ -9,7 +9,6 @@ lib-y := errno.o ctype.o string.o vsprin
lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
-lib-$(CONFIG_SMP) += percpu_counter.o
ifneq ($(CONFIG_HAVE_DEC_LOCK),y)
lib-y += dec_and_lock.o
diff -puN mm/swap.c~percpu-counter-linkage-fix mm/swap.c
--- 25/mm/swap.c~percpu-counter-linkage-fix 2003-11-07 20:36:48.000000000 -0800
+++ 25-akpm/mm/swap.c 2003-11-07 20:36:48.000000000 -0800
@@ -14,6 +14,7 @@
*/
#include <linux/mm.h>
+#include <linux/sched.h>
#include <linux/kernel_stat.h>
#include <linux/swap.h>
#include <linux/mman.h>
@@ -23,6 +24,8 @@
#include <linux/module.h>
#include <linux/mm_inline.h>
#include <linux/buffer_head.h> /* for try_to_release_page() */
+#include <linux/module.h>
+#include <linux/percpu_counter.h>
#include <linux/percpu.h>
/* How many pages do we try to swap or page in/out together? */
@@ -380,6 +383,24 @@ void vm_acct_memory(long pages)
EXPORT_SYMBOL(vm_acct_memory);
#endif
+#ifdef CONFIG_SMP
+void percpu_counter_mod(struct percpu_counter *fbc, long amount)
+{
+ int cpu = get_cpu();
+ long count = fbc->counters[cpu].count;
+
+ count += amount;
+ if (count >= FBC_BATCH || count <= -FBC_BATCH) {
+ spin_lock(&fbc->lock);
+ fbc->count += count;
+ spin_unlock(&fbc->lock);
+ count = 0;
+ }
+ fbc->counters[cpu].count = count;
+ put_cpu();
+}
+EXPORT_SYMBOL(percpu_counter_mod);
+#endif
/*
* Perform any setup for the swap system
_
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-11-11 0:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-11-10 23:30 percpu_counter_mod not getting into SMP kernel image when ext2/3 compiled as modules Jeff Bowden
2003-11-11 0:40 ` Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).