Re: [BUG] copy file result with zero

From: Ted Ts'o
Date: Sat Oct 01 2011 - 10:39:21 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/