Re: Swap on Fuse deadlocks?

From: Miklos Szeredi
Date: Tue Sep 26 2006 - 13:56:42 EST


> > I just tried to set up an LZOlayer swap partition:
> >
> > http://north.one.pl/~kazik/pub/LZOlayer/
> >
> > The layout was as such:
> >
> > /tmp/swap_base - tmpfs (run1), disk (run2)
> > /tmp/swap - lzolayer swap_base
> > /tmp/swap/swap0 - 200M swap file
> > /dev/loop0 - /tmp/swap/swap0 loopback
> >
> > I turned on loop0, crept anywhere over 10 megs into swap and it seized
> > up (otherwise it was fine). This happened in both run1 (swap on tmpfs)
> > and run2 (swap on disk).
> >
> > The swap on tmpfs I can understand; it'll essentially loop trying to
> > allocate new swap, swap in and out parts of the swap file to itself, and
> > eventually hit a condition where it's trying to swap an area of the swap
> > file into itself, creating an infinite loop.
> >
> > Swap on disk I don't get. A little slow perhaps due to the LZO or zlib
> > compression in the middle (lzolayer lets you pick either); but a total
> > freeze? What's wrong here, is lzo_fs data getting swapped out and then
> > not swapped in because it's needed to decompress itself?
>
> Yes, possibly. Or maybe lzo_fs needs to allocate memory and kernel
> decides it needs to swap for that?
>
> It is miracle that fuse works for normal write, do not expect it to
> work for swap. (Does it even work mmap-ed writes?)

No. Though with the dirty page accounting and callback in 2.6.18 it
would be possible to add writable mmap support.

This is next on my todo list once fuse-2.6.0 is out and I have a
little spare time.

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