From: Jason Lunz <lunz@falooley.org>
To: jsipek@cs.sunysb.edu
Cc: unionfs@mail.fsl.cs.sunysb.edu, linux-fsdevel@vger.kernel.org
Subject: Re: Unionfs in -mm
Date: Tue, 9 Jan 2007 15:08:57 -0500 [thread overview]
Message-ID: <20070109200857.GA28443@knob.reflex> (raw)
In-Reply-To: <20070109004456.GA7954@filer.fsl.cs.sunysb.edu>
On Mon, Jan 08, 2007 at 07:44:56PM -0500, Josef Sipek wrote:
> Today is a good day!
>
> Andrew Morton included a minimal version of Unionfs in his -mm tree.
>
> This minimal version of the code lacks some of the features in the full
> fledged version, however we'll be cleaning them up and adding them in one at
> a time.
>
> Thank you all who helped to make this possible!
and thanks to you all for the hard work.
But I have a bug to report. I'm trying out yesterday's 24-patch series
on 2.6.20-rc4 (http://thread.gmane.org/gmane.linux.kernel/481661).
The root filesystem is a union of a ro squashfs and a rw tmpfs.
The initramfs sets it up something like this:
mkdir /os
mount -r -t squashfs /dev/ram0 /os
mkdir /cow
mount -t tmpfs -o mode=0755 tmpfs /cow
mount -w -o dirs=/cow=rw:/os=ro -t unionfs unionfs /root
The system works normally, except that it crashes reliably whenever I
run this program:
#! /usr/bin/python
import glob
import os
import subprocess
import sys
def processes():
'Returns a iterator over (pid, exe) tuples for each running process.'
# the kernel appends this to the link target when the running exe has been
# unlinked
unlinked_suffix = ' (deleted)'
subprocess.call('ps axf 1>&2', shell=True)
subprocess.call('ls -l /proc/* 1>&2', shell=True)
for ed in glob.glob('/proc/*'):
print >>sys.stderr, 'looking at %s' % ed
try:
pid = int(os.path.basename(ed))
except ValueError:
# probably /proc/self or something
continue
print >>sys.stderr, '%s has pid %s' % (ed, pid)
try:
l = os.path.join(ed, 'exe')
print >>sys.stderr, 'reading %s' % l
targ = os.readlink(l)
except OSError:
# building a list of running processes is inherently racy, oh well
continue
if targ.endswith(unlinked_suffix):
targ = targ[:-len(unlinked_suffix)]
yield (pid, targ)
for p, e in processes():
print >>sys.stderr, p, e
here's the oops from running under qemu. More or less the same thing
happens in UML kernels too:
BUG: unable to handle kernel NULL pointer dereference at virtual address 00000010
printing eip:
c015d701
*pde = 00000000
Oops: 0000 [#1]
SMP
Modules linked in: button ac battery bridge llc unionfs squashfs zlib_inflate rd ext2 dm_mod ide_cd cdrom ide_disk mousedev parport_pc parport floppy serio_raw psmouse piix generic ide_core ata_generic libata pcspkr ne2k_pci 8390 i2c_piix4 i2c_core scsi_mod evdev fan
CPU: 0
EIP: 0060:[<c015d701>] Not tainted VLI
EFLAGS: 00200202 (2.6.20-rc4-x86 #0)
EIP is at __d_path+0x8f/0x154
eax: c68ad42c ebx: c364dffe ecx: 00000000 edx: 00001000
esi: c7a81da0 edi: c6ce6a9c ebp: c364dfff esp: c72f5ec8
ds: 007b es: 007b ss: 0068
Process ls (pid: 1804, ti=c72f5000 task=c7a91ab0 task.ti=c72f5000)
Stack: c68ad42c 00000000 c6ce6a9c 00000044 00000001 00000fff c68ad42c c7a81da0
c364d000 00000000 c015ec0e c7a81da0 c364d000 00001000 c6ce6a9c c6ce6a9c
c364d000 fffffff4 00000000 c01774b3 00001000 00000001 08061290 00000000
Call Trace:
[<c015ec0e>] d_path+0x91/0xbd
[<c01774b3>] proc_pid_readlink+0x76/0xdc
[<c015246e>] sys_readlinkat+0x83/0x9e
[<c01524b0>] sys_readlink+0x27/0x2b
[<c0102ccc>] syscall_call+0x7/0xb
=======================
Code: ff 2f eb 08 8b 7c 24 10 89 7c 24 08 8b 04 24 39 44 24 08 75 0e 8b 54 24 2c 39 54 24 04 0f 84 c3 00 00 00 8b 7c 24 08 8b 4c 24 04 <3b> 79 10 74 0b 8b 47 18 89 44 24 10 39 c7 75 29 b8 80 f0 2e c0
EIP: [<c015d701>] __d_path+0x8f/0x154 SS:ESP 0068:c72f5ec8
any ideas?
Jason
next parent reply other threads:[~2007-01-09 20:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20070109004456.GA7954@filer.fsl.cs.sunysb.edu>
2007-01-09 20:08 ` Jason Lunz [this message]
2007-01-13 6:48 ` Unionfs in -mm Josef Sipek
2007-01-16 23:03 ` Jason Lunz
2007-01-17 0:28 ` [Unionfs] " Jan Engelhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070109200857.GA28443@knob.reflex \
--to=lunz@falooley.org \
--cc=jsipek@cs.sunysb.edu \
--cc=linux-fsdevel@vger.kernel.org \
--cc=unionfs@mail.fsl.cs.sunysb.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.