Subject: `cp --reflink=always` creates empty file on failure
From: Benjamin Gilbert <[email-masked]>
To: [email-masked]
Date: Tue, 5 Jul 2022 01:39:11 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

When `cp --reflink=always` fails because the filesystem does not support
reflinks, I'd expect it not to leave anything at the destination path.
However, it appears to leave an empty file instead:

$ ls -l
total 0
$ echo "some data" > src
$ cp --reflink=always src dest
cp: failed to clone 'dest' from 'src': Operation not supported
$ ls -l
total 4
-rw-rw-r--. 1 bgilbert bgilbert  0 Jul  5 01:27 dest
-rw-rw-r--. 1 bgilbert bgilbert 10 Jul  5 01:27 src

I'm seeing this on both coreutils 9.0 (Fedora 36) and 9.1.31-fa332 built
from Git.

Best,
--Benjamin Gilbert