Re: kernel 2.4 status page - loopback mount option still has problems even in 2.4.0-test7-final.

From: Mike Galbraith (mikeg@weiden.de)
Date: Mon Aug 28 2000 - 10:43:16 EST


On Sun, 27 Aug 2000, William Stearns wrote:

> Good day, Ted and all,
> The loopback mount option is still not 100% there for me in
> 2.4.0-test7; there appears to be some kind of deadlock still there (thenks
> arjan and cesarb!). Here's the line from your 2.4 status page:
>
> - Loop device hangs (Peter Enderborg can duplicate by writing large file
> to dosfs mounted via loop device; Steve Dodd reports deadlock issues;
> Linus says fixed in test6)
>
> I do quite a bit of work with creating a 50-200M file, making an
> ext2 filesystem on it, then loading it with rpms for User Mode Linux. On
> a 256M machine with other apps running, I find I can do this 3 to 5 times
> before the machine hangs (no oops, some apps still run, nothing from
> dmesg, apps stuck in the "D" state according to ps, unable to shutdown or
> halt, unable to unmount the loopback'ed filesystem).

Hi,

I tried your script many times today and was unable to induce deadlock
with or without other things running.. iozone, updatedb etc.

However :-) you want to see something really odd? The below reliably
fails in a 1024 blocksize fs but passes fine in a 4096 blocksize fs. I
can't see anything inside the driver that can possibly cause this weird
failure. With a 1k blocksize, it always begins to choke as swap kicks
in. It works fine as a single process compile regardless of blocksize.

        -Mike

#!/bin/bash

# Run with PWD in 1024 blocksize fs.. then try it with 4096 blocksize.
# Adjust $KICKMEBEATMEMAKEMEBLEED to swap heartily.. but not insanely.
# 30 works well on my 128mb box, YMMV.

KICKMEBEATMEMAKEMEBLEED=30

cleanup()
{
        umount /mnt 2>/dev/null
        rm -f ./canned_fs
        exit 1
}

if [ ! -d /mnt ]; then mkdir /mnt ; fi
umount /mnt 2>/dev/null

# look down
mkdir ./cheezy_blocksize_check || exit 1
BLOCKSIZE=$((`/bin/ls -ds ./cheezy_blocksize_check|cut -c4` * 1024))
rmdir ./cheezy_blocksize_check
# HERE. (the hand is quicker than the eye ;-)

echo "Testing loopback filesystem of blocksize $BLOCKSIZE"

dd if=/dev/zero of=./canned_fs bs=1024k count=200 || cleanup
mke2fs -F ./canned_fs -b $BLOCKSIZE || cleanup

mount -o loop ./canned_fs /mnt || cleanup
(
        cd /mnt && cp -a /usr/src/linux . && cd linux && \
        make dep && make -j $KICKMEBEATMEMAKEMEBLEED bzImage
) >/dev/null 2>&1 && \
echo "Yup.. $BLOCKSIZE works." || echo "Bugger.. $BLOCKSIZE fails!"
cleanup

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Aug 31 2000 - 21:00:21 EST