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
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to