From: Miklos S. <mi...@sz...> - 2006-03-31 12:12:38
|
> I constantly get an oops while attempting to do parallel builds, > using make -j3, on a dualcore (Athlon X2) system. The filesystem in > question is encfs 1.2.5, although it probably is a fuse-only > problem, since it crashes inside the kernel. The kernel is a vanilla > 2.6.16.1, SMP, with both preemption and BKL preemption turned > off. The libfuse2 version is 2.5.2. > > That oops does not happen when I do a non-parallel build, using just > make without -j. It also never happens when I try same parallel > build on a non-SMP kernel. So it seems like an SMP-only problem. Thanks for the report. Can you please try the attached patch? I'm not 100% sure that my analysis is correct, so I'm very interested in your results. Thanks, Miklos Index: linux/fs/fuse/file.c =================================================================== --- linux.orig/fs/fuse/file.c 2006-03-31 14:00:35.000000000 +0200 +++ linux/fs/fuse/file.c 2006-03-31 14:04:30.000000000 +0200 @@ -397,8 +397,12 @@ static int fuse_readpages(struct file *f return -EINTR; err = read_cache_pages(mapping, pages, fuse_readpages_fill, &data); - if (!err) - fuse_send_readpages(data.req, file, inode); + if (!err) { + if (data.req->num_pages) + fuse_send_readpages(data.req, file, inode); + else + fuse_put_request(fc, data.req); + } return err; } |