Re: [BUG] copy file result with zero

Ted Ts'o
2011-10-01T14:39:09Z

On Sat, Oct 01, 2011 at 10:01:35PM +0800, Dave Young wrote:
> Hi,
>
> Weird problem, when I build app from source,
> make; make install
> run the command, but got "cannot execute binary file"
>
> hexdump shows the installed binary is full of zero
>
> Is it related to ext4 fiemap problem described below?
> http://lwn.net/Articles/429349/

There is general agreement that /bin/cp should not have been relying
on FIEMAP, and I believe the more recent versions of /bin/cp have
removed that code by default pending implementation of
SEEK_HOLE/SEEK_DATA. That being said, ext4 had a workaround to its
FIEMAP implementation that landed in 2.6.39, and you're using
3.1.0-rc6.

> I finally managed to find the way to reproduce this:
> just cp a elf binary A to file B, then cp B to file C, then you will get:
> A == B != C
>
> ie.
> cp /bin/ls ls1
> cp ls1 ls2
>
> ls2 will be filled with zero

If you add a "sync" between the two copies, does that work around the
problem? I bet it will...

My suggestion is to upgrade to a newer version of coreutils that
doesn't try to use FIEMAP.

- Ted