I start off w/ a simple 1 branch union
I run a simple program
---
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd, err;
char string[] = "XXXXXXXXXXXXXXX";
fd = open("union/1", O_RDWR);
if (fd < 0) {
perror("open failed\n");
return 1;
}
sleep(30);
write(fd, string, strlen(string));
}
---
then while it's sleeping I add a rw branch, and make the old branch ro.
results in this assertion failure, which takes down my vm in a chain
reaction of oopses that results in a panic.
ASSERTION FAILED: putmap (null) at /root/unionfs-20050923-1803/commonfops.c:41
(branchput_gen)
Unable to handle kernel NULL pointer dereference at virtual address 00000000
printing eip:
d1016521
*pde = 00000000
Oops: 0002 [#1]
PREEMPT
Modules linked in: unionfs ipv6 af_packet piix ide_generic ext3 jbd pcspkr
tsdev mousedev evdev psmouse genrtc sd_mod pcnet32 mii ide_cd cdrom ide_disk
ide_core mptscsih mptbase scsi_mod unix
CPU: 0
EIP: 0060:[<d1016521>] Not tainted VLI
EFLAGS: 00010296 (2.6.11.12)
EIP is at unionfs_file_revalidate+0xf275/0xfd38 [unionfs]
eax: 00000062 ebx: cfff1b60 ecx: cbac1f00 edx: d10328e0
esi: cdd37200 edi: 00000000 ebp: 00000000 esp: cbac1f14
ds: 007b es: 007b ss: 0068
Process a.out (pid: 1369, threadinfo=cbac0000 task=cda35a60)
Stack: c02e1b28 00000046 d1025a7f 00000000 00000001 00000001 cba39eac cdd37200
ccc166c0 00000000 cd88e200 00000001 d1021d91 ccc166c0 00000001 00001d00
cd69d800 ccc166c0 00000000 cd88e200 00000001 c013ed46 ccc166c0 cd88e200
Call Trace:
[<d1025a7f>] fist_dprint_internal+0xb/0x54 [unionfs]
[<d1021d91>] unionfs_flush+0x45/0x31b3 [unionfs]
[<c013ed46>] filp_close+0x3e/0x63
[<c0110d4f>] put_files_struct+0x54/0xab
[<c01117f8>] do_exit+0x112/0x30c
[<c0111ac5>] sys_exit_group+0x0/0x11
[<c0102473>] syscall_call+0x7/0xb
Code: 29 81 ff 5a 5a 5a 5a 68 a0 25 03 d1 b8 43 56 03 d1 74 05 b8 54 56 03 d1
50 68 d7 57 03 d1 68 e0 28 03 d1 e8 0d 98 0f ef 83 c4 18 <c6> 05 00 00 00 00 00
e9 32 65 ff ff 8d 76 00 68 2e d3 02 d1 6a
as I'm unclear what putmap is for, unsure what's going wrong w/ this
code
putmap =
stopd(sb)->usi_putmaps[generation - stopd(sb)->usi_firstputmap];
PASSERT(putmap);
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs