2001-11-20 08:23:58

by Terje Dalen

[permalink] [raw]
Subject: PROBLEM: Kernel link problem (block.o)

Hi,

I have upgraded the kernel from 2.4.8 to 2.4.14 due freezing problems
with 2.4.8 (I think there must have been a deadlock with the memory/swap
handling. It only worked for 10 minutes to 6 hours).

My link problem started when I recompiled the kernel with

CONFIG_BLK_DEV_LOOP = y

and get the following problem:

ld -m elf_i386 -T /usr/src/linux-2.4.14/arch/i386/vmlinux.lds -e stext
arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o
init/version.o \
--start-group \
arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o
fs/fs.o ipc/ipc.o \
drivers/char/char.o drivers/block/block.o drivers/misc/misc.o
drivers/net/net.o drivers/media/media.o drivers/char/drm/drm.o
drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o
drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o
drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o
drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o
drivers/net/hamradio/hamradio.o drivers/md/mddev.o \
net/network.o \
/usr/src/linux-2.4.14/arch/i386/lib/lib.a
/usr/src/linux-2.4.14/lib/lib.a /usr/src/linux-2.4.14/arch/i386/lib/lib.a \
--end-group \
-o vmlinux
drivers/block/block.o: In function `lo_send':
drivers/block/block.o(.text+0xb2e9): undefined reference to
`deactivate_page'
drivers/block/block.o(.text+0xb325): undefined reference to
`deactivate_page'


I can see from in the changelog that the swap.h have been changed and the
deactivate_page function has been removed. I guess someone forgot to update
the loop.c file. Is there a patch available for the correction of loop.c?

When I compiled the kernel as a module I was able to install and run the
kernel
and actually my system have been stable for the last 14 hours.

Best regards
Terje




2001-11-20 09:46:23

by Adrian Bunk

[permalink] [raw]
Subject: Re: PROBLEM: Kernel link problem (block.o)

On Tue, 20 Nov 2001, Terje Dalen wrote:

> Hi,

Hi Terje,

>...
> drivers/block/block.o: In function `lo_send':
> drivers/block/block.o(.text+0xb2e9): undefined reference to
> `deactivate_page'
> drivers/block/block.o(.text+0xb325): undefined reference to
> `deactivate_page'
>
>
> I can see from in the changelog that the swap.h have been changed and the
> deactivate_page function has been removed. I guess someone forgot to update
> the loop.c file. Is there a patch available for the correction of loop.c?
>...

This is a known bug.

The following patch fixes it:

--- linux-2.4.14-broken/drivers/block/loop.c Thu Oct 25 13:58:34 2001
+++ linux-2.4.14/drivers/block/loop.c Mon Nov 5 17:06:08 2001
@@ -207,7 +207,6 @@
index++;
pos += size;
UnlockPage(page);
- deactivate_page(page);
page_cache_release(page);
}
return 0;
@@ -218,7 +217,6 @@
kunmap(page);
unlock:
UnlockPage(page);
- deactivate_page(page);
page_cache_release(page);
fail:
return -1;


> Best regards
> Terje

cu
Adrian

--

Get my GPG key: finger [email protected] | gpg --import

Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400

2001-11-20 09:52:33

by Morten Helgesen

[permalink] [raw]
Subject: Re: PROBLEM: Kernel link problem (block.o)

Hey, Terje!

Just remove the two references to deactivate_page.

== Morten

On Tue, Nov 20, 2001 at 09:19:49AM +0100, Terje Dalen wrote:
> Hi,
>
> I have upgraded the kernel from 2.4.8 to 2.4.14 due freezing problems
> with 2.4.8 (I think there must have been a deadlock with the memory/swap
> handling. It only worked for 10 minutes to 6 hours).
>
> My link problem started when I recompiled the kernel with
>
> CONFIG_BLK_DEV_LOOP = y
>
> and get the following problem:
>
> ld -m elf_i386 -T /usr/src/linux-2.4.14/arch/i386/vmlinux.lds -e stext
> arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o
> init/version.o \
> --start-group \
> arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o
> fs/fs.o ipc/ipc.o \
> drivers/char/char.o drivers/block/block.o drivers/misc/misc.o
> drivers/net/net.o drivers/media/media.o drivers/char/drm/drm.o
> drivers/net/fc/fc.o drivers/net/appletalk/appletalk.o
> drivers/net/tokenring/tr.o drivers/net/wan/wan.o drivers/atm/atm.o
> drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o
> drivers/net/wireless/wireless_net.o drivers/pnp/pnp.o drivers/video/video.o
> drivers/net/hamradio/hamradio.o drivers/md/mddev.o \
> net/network.o \
> /usr/src/linux-2.4.14/arch/i386/lib/lib.a
> /usr/src/linux-2.4.14/lib/lib.a /usr/src/linux-2.4.14/arch/i386/lib/lib.a \
> --end-group \
> -o vmlinux
> drivers/block/block.o: In function `lo_send':
> drivers/block/block.o(.text+0xb2e9): undefined reference to
> `deactivate_page'
> drivers/block/block.o(.text+0xb325): undefined reference to
> `deactivate_page'
>
>
> I can see from in the changelog that the swap.h have been changed and the
> deactivate_page function has been removed. I guess someone forgot to update
> the loop.c file. Is there a patch available for the correction of loop.c?
>
> When I compiled the kernel as a module I was able to install and run the
> kernel
> and actually my system have been stable for the last 14 hours.
>
> Best regards
> Terje
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

--
mvh
Morten Helgesen
UNIX System Administrator & C Developer
Nextframe AS
[email protected] / 93445641
http://www.nextframe.net