From: Han-Wen N. <ha...@gm...> - 2011-09-12 03:05:01
|
On Fri, Sep 9, 2011 at 4:36 PM, Miklos Szeredi <mi...@sz...> wrote: >>>> Apparently, the program is assuming that fallocate will create space >>>> for it to write to through the mmap. It doesn't fall back to something >>>> else, and the write to the mmapped address fails with sigbus. >>> >>> Very few filesystems currently implement fallocate, so fuse is probably >>> not the only fs that this aplicateion will fail with. >> >> It's a version of GNU ld. The failure surprised me as well, but maybe >> they use configure time checks to decide what to do here. > > Interesting. Ext3 doesn't have fallocate, for example, but ld > obviously does work on ext3. So apparently ld decided that the fuse > filesystem in question does support fallocate and didn't even check > the return value. I guess this is a bug and should be reported... I dug around, and there is a bug in ld (more precisely, gold), in that it misinterprets errorcodes of posix_fallocate(), and tries to continue, with a crash result. The root problem here was that my filesystem did not correctly handle statfs, which posix_fallocate() uses for guessing blocksize. If statfs() fails, posix_fallocate() will fail too. -- Han-Wen Nienhuys - ha...@xs... - http://www.xs4all.nl/~hanwen |