Thanks for the patch, but I can still reproduce the problem. I've been running the attached program to try to speed up the testing process a bit. Interrupting and restarting the compilation loop also seems to help.
If I had hours to wait, it would probably crash eventually without additional encouragement, but I'm doing everything as an unprivileged user, so I don't think my tests are unreasonable. Anyway, I'm still getting a panic with debug enabled: reiser4 panicked cowardly: reiser4[find(16411)]: reiser4_dirty_inode (fs/reiser4/super_ops.c:173)[]: Kernel panic - not syncing: reiser4[find(16411)]: reiser4_dirty_inode (fs/reiser4/super_ops.c:173)[]: Without debug enabled I've seen: http://people.msoe.edu/~maciejej/patches/AMD64_reiser4_debug/20060718/messages1.txt.gz http://people.msoe.edu/~maciejej/patches/AMD64_reiser4_debug/20060718/fsck1_--check.txt.gz http://people.msoe.edu/~maciejej/patches/AMD64_reiser4_debug/20060718/fsck1_--fix.txt.gz http://people.msoe.edu/~maciejej/patches/AMD64_reiser4_debug/20060718/fsck1_--check_after_--fix.txt.gz but usually I get: http://people.msoe.edu/~maciejej/patches/AMD64_reiser4_debug/20060718/messages3.txt.gz with no corruption (although I've been rebooting before complete failure). On Mon, 2006-07-17 at 21:38 +0400, Vladimir V. Saveliev wrote: > Hello > > On Mon, 2006-07-17 at 18:10 +0400, Vladimir V. Saveliev wrote: > > Hello > > > > On Sun, 2006-07-16 at 12:44 -0500, [EMAIL PROTECTED] wrote: > > > Has my previous post > > > (http://marc.theaimsgroup.com/?l=reiserfs&m=115259665831650&w=2) been > > > overlooked, or have I not provided enough information? Do I need to > > > reproduce these issues on 2.6.18-rc1-mm2? Should I be trying any patches? > > > > > > > please try the attached patch. > > > your test crashes reiser4 on my test box. I hope to get a patch ready > > later today. Not sure that I got the same problem as you, though. We > > will see. > > > > > The bottom line is with 2.6.17-mm6, I've always been able to OOPs or panic > > > reiser4 on my amd64 machine (haven't tried x86 yet) by using all available > > > physical memory. > > > > > > > > > > -- Jake Maciejewski <[EMAIL PROTECTED]>
#include <sys/sysinfo.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #define MB 1048576 #define DEFAULT_SAVE 0 #define DELAY 10 int main(int argc, char *argv[]) { struct sysinfo info; size_t waste, save; void *ptr; sysinfo(&info); if(argc>1) save = atoi(argv[1])*MB; else save = DEFAULT_SAVE*MB; if( save >= info.freeram ) { fprintf(stderr, "error: only %iMB free\n", (int)info.freeram/MB); return ENOMEM; } while(1) { sysinfo(&info); waste = (info.freeram-save)>0 ? info.freeram-save : 0; ptr = malloc(waste); if( ptr == 0 ) { perror("malloc() failed\n"); return ENOMEM; } printf("reserving %iMB, wasting %iMB\n", (int)save/MB, (int)waste/MB); memset(ptr, 0, waste); sleep(DELAY); free(ptr); } return 0; }