2001-11-12 08:58:41

by johann.pfefferl.jp

[permalink] [raw]
Subject: loop Device doesn't work in kernel 2.4.14

Hello,

I have detected that the loop device mechanism can't be
used any longer in kernel version 2.4.14. I have compiled
the kernel with minimum features (ext2, initrd, ramdisk) compiled
into the kernel. The rest is all modules.

# cat /proc/version
Linux version 2.4.14 (root@pcls03) (gcc version 2.95.3 20010315 (SuSE)) #2 Wed Nov 7 11:34:01 CET 2001

# mount -o loop /tmp/DISK /mnt -v
mount: Could not find any loop device, and, according to /proc/devices,
this kernel does not know about the loop device.
(If so, then recompile or `insmod loop.o'.)

# modprobe -v loop
/sbin/insmod /lib/modules/2.4.14/kernel/drivers/block/loop.o
Using /lib/modules/2.4.14/kernel/drivers/block/loop.o
Symbol version prefix ''
/lib/modules/2.4.14/kernel/drivers/block/loop.o: unresolved symbol deactivate_page
/lib/modules/2.4.14/kernel/drivers/block/loop.o: insmod /lib/modules/2.4.14/kernel/drivers/block/loop.o failed
/lib/modules/2.4.14/kernel/drivers/block/loop.o: insmod loop failed

# find /usr/src/linux-2.4.14 -type f -name '*.[ch]' |xargs grep deactivate_page
/usr/src/linux-2.4.14/drivers/block/loop.c: deactivate_page(page);
/usr/src/linux-2.4.14/drivers/block/loop.c: deactivate_page(page);

# depmod -ae
depmod: *** Unresolved symbols in /lib/modules/2.4.14/kernel/drivers/block/loop.o
depmod: deactivate_page
depmod: *** Unresolved symbols in /lib/modules/2.4.14/kernel/drivers/net/wan/comx.o
depmod: proc_get_inode
depmod: *** Unresolved symbols in /lib/modules/2.4.14/kernel/drivers/telephony/ixj_pcmcia.o
depmod: register_pccard_driver
depmod: unregister_pccard_driver
depmod: CardServices

There seems to be a problem with the routine deactivate_page, which is no longer present
in the 2.4.14 kernel but is used somehow in the loop device code.

Hans
--
Dr.-Ing. Johann Pfefferl mailto:[email protected]
Agfa-Gevaert AG Tel.: +49 89 6207-3524
GF Laborgeraete, Entwicklung Software (LG-ESW) Sek.: +49 89 6207-3362
Tegernseer Landstr. 161, D-81539 Muenchen Fax : +49 89 6207-7279
__
/ / __ _ _ _ _ __ __
/ /__ / / / \// //_// \ \/ / -o)
/____/ /_/ /_/\/ /___/ /_/\_\ /\\
...for IQs GREATER than 98... _\_v-



2001-11-12 09:13:06

by DevilKin

[permalink] [raw]
Subject: Re: loop Device doesn't work in kernel 2.4.14

At 09:57 12/11/2001 +0100, you wrote:
>Hello,
>
>I have detected that the loop device mechanism can't be
>used any longer in kernel version 2.4.14. I have compiled
>the kernel with minimum features (ext2, initrd, ramdisk) compiled
>into the kernel. The rest is all modules.
>
># cat /proc/version
>Linux version 2.4.14 (root@pcls03) (gcc version 2.95.3 20010315 (SuSE)) #2
>Wed Nov 7 11:34:01 CET 2001
>
># mount -o loop /tmp/DISK /mnt -v
>mount: Could not find any loop device, and, according to /proc/devices,
> this kernel does not know about the loop device.
> (If so, then recompile or `insmod loop.o'.)
>
># modprobe -v loop
>/sbin/insmod /lib/modules/2.4.14/kernel/drivers/block/loop.o
>Using /lib/modules/2.4.14/kernel/drivers/block/loop.o
>Symbol version prefix ''
>/lib/modules/2.4.14/kernel/drivers/block/loop.o: unresolved symbol
>deactivate_page
>/lib/modules/2.4.14/kernel/drivers/block/loop.o: insmod
>/lib/modules/2.4.14/kernel/drivers/block/loop.o failed
>/lib/modules/2.4.14/kernel/drivers/block/loop.o: insmod loop failed
>
># find /usr/src/linux-2.4.14 -type f -name '*.[ch]' |xargs grep
>deactivate_page
>/usr/src/linux-2.4.14/drivers/block/loop.c: deactivate_page(page);
>/usr/src/linux-2.4.14/drivers/block/loop.c: deactivate_page(page);
>
># depmod -ae
>depmod: *** Unresolved symbols in
>/lib/modules/2.4.14/kernel/drivers/block/loop.o
>depmod: deactivate_page
>depmod: *** Unresolved symbols in
>/lib/modules/2.4.14/kernel/drivers/net/wan/comx.o
>depmod: proc_get_inode
>depmod: *** Unresolved symbols in
>/lib/modules/2.4.14/kernel/drivers/telephony/ixj_pcmcia.o
>depmod: register_pccard_driver
>depmod: unregister_pccard_driver
>depmod: CardServices
>
>There seems to be a problem with the routine deactivate_page, which is no
>longer present
>in the 2.4.14 kernel but is used somehow in the loop device code.
>
>Hans

This is a known problem, and is fixed starting 2.4.15-pre1. Otherwise you
can also manually remove the deactivate_page calls from loop.c and compile
again.

DK

2001-11-12 09:16:02

by Adrian Bunk

[permalink] [raw]
Subject: Re: loop Device doesn't work in kernel 2.4.14

On Mon, 12 Nov 2001 [email protected] wrote:

> Hello,

Hi Hans,

>...
> # modprobe -v loop
> /sbin/insmod /lib/modules/2.4.14/kernel/drivers/block/loop.o
> Using /lib/modules/2.4.14/kernel/drivers/block/loop.o
> Symbol version prefix ''
> /lib/modules/2.4.14/kernel/drivers/block/loop.o: unresolved symbol deactivate_page
> /lib/modules/2.4.14/kernel/drivers/block/loop.o: insmod /lib/modules/2.4.14/kernel/drivers/block/loop.o failed
> /lib/modules/2.4.14/kernel/drivers/block/loop.o: insmod loop failed
>
> # find /usr/src/linux-2.4.14 -type f -name '*.[ch]' |xargs grep deactivate_page
> /usr/src/linux-2.4.14/drivers/block/loop.c: deactivate_page(page);
>...
> There seems to be a problem with the routine deactivate_page, which is no longer present
> in the 2.4.14 kernel but is used somehow in the loop device code.

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;

> Hans

cu
Adrian

--

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

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