e2fsprogs 1.42.11 and above fails to build on uclibc

Anthony G. Basile basile at opensource.dyc.edu
Mon Sep 1 15:59:23 UTC 2014


On 09/01/14 11:32, Waldemar Brodkorb wrote:
> Hi Anthony,
> Anthony G. Basile wrote,
>
>> Hi everyone,
>>
>> I've written a patch to introduce fallocate()/fallocate64() in
>> uclibc. This is useful for e2fsprogs which now requires
>> fallocate64(). [0]
>>
>> Before sending the patch, here's some background: e2fsprogs was
>> using a direct syscall(__NR_fallocate, ...) in e4defrag which was
>> broken [1]. This was removed and replaced by a simple "#error" if
>> fallocate64 is not available, which it is not in uclibc, although
>> posix_fallocate64 is. Ironically, e2fsprogs calls fallocate64 in
>> default mode which is equivalent to posix_fallocate64.  I submitted
>> a patch to e2fsprogs to use posix_fallocate in e4defrag[2].  Ted
>> Ts'o's response was that they're not equivalent because, according
>> to him, some implementations of posix_fallocate fall back on brute
>> force zero-ing if the fallocate syscall is not available.  I
>> responded [3], but the issue fell off the radar.
>>
>> Rather than pushing in that direction, I thought perhaps uclibc
>> would benefit from the addition of fallocate/fallocate64.  Its a
>> straight forward extension of what's already there since
>> posix_fallocate syscalls fallocate with mode=0.  We just relax that
>> for fallocate.  I didn't add tests because testing is already there
>> for posix_fallocate.  I guess we could use test for the different
>> modes, but I'm not sure how useful that might be for testing.
>
> As you working on extending fallocate functions, would it be
> possible to fix the test case tst-posix_fallocate64?
>
> It would be nice to have this fixed, before adding changes to
> posix_fallocate64 files, to see if your patch adds any regression
> to the existing codebase. What do you think?
>
> See the test failures here:
> http://openadk.org/test/
>
> May be it is just a simple bug, have not looked into this, yet.
>
> best regards
>   Waldemar
>

Strange, I'm not hitting it at my end.  What's even stranger is that 
tst-posix_fallocate64.c is two lines long and just includes 
tst-posix_fallocate.c which doesn't fail in your tests.  The tests pass 
at my end either with or without my patch.  See what's going on at your end.

Aside: I'm looking at where I put fallocate/fallocate64 in the config 
menu and it should be moved.  Currently my patch puts it under

Advanced Library Settings  --->
    Realtime-related family of SUSv functions
       Advanced realtime-related family of SUSv functions

But its not in any SUSvX.  So I should probably move it to

Advanced Library Settings  --->
     Linux specific functions

I just naively put it beside posix_fallocate.

-- 
Anthony G. Basile, Ph. D.
Chair of Information Technology
D'Youville College
Buffalo, NY 14201
(716) 829-8197


More information about the uClibc mailing list