diff options
author | Richard Jones <rjones@redhat.com> | 2010-04-08 08:48:38 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-04-08 08:49:00 +0100 |
commit | 07f4b20ae959069fca41756b0dc103ec5fa99754 (patch) | |
tree | f07cd64a4a23dfa4f2ea9949bdc673d224bb11c6 /regressions | |
parent | 4c50f4c38d9a50fbf983c79dd208d1b1598fef8a (diff) | |
download | libguestfs-07f4b20ae959069fca41756b0dc103ec5fa99754.tar.gz libguestfs-07f4b20ae959069fca41756b0dc103ec5fa99754.tar.xz libguestfs-07f4b20ae959069fca41756b0dc103ec5fa99754.zip |
Fix tar-in command hangs when running out of disk space (RHBZ#580246).
The problem was this sequence of events:
(1) File transfer goes through OK.
(2) pclose returns failure (because 'tar' subprocess failed)
(3) We try to cancel the transfer by calling cancel_receive.
Step (3) fails because the transfer (as far as the library is
concerned) has succeeded, so causing a hang.
The more fundamental reason why we see steps (1) and (2) is that
'tar' does NOT fail immediately if there is a write error. Instead
it continues reading and discarding the input until the end of the
input before giving "Error exit delayed from previous errors".
IMHO this is a bug with tar, since an ENOSPC write error should
be fatal for tar.
Diffstat (limited to 'regressions')
0 files changed, 0 insertions, 0 deletions