Bug 875329 - [rsync] "No space left on device" not reported to user
Summary: [rsync] "No space left on device" not reported to user
Keywords:
Status: CLOSED DUPLICATE of bug 868755
Alias: None
Product: Fedora
Classification: Fedora
Component: anaconda
Version: 18
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Brian Lane
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-11-10 14:52 UTC by Steve Tyler
Modified: 2012-11-12 16:22 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-11-12 16:22:06 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
screenshot showing "rsync exited with code 12" error message (43.35 KB, image/png)
2012-11-10 14:52 UTC, Steve Tyler
no flags Details
anaconda-tb-Og2Hmj log showing rsync error message "No space left on device" (529.86 KB, text/plain)
2012-11-10 14:57 UTC, Steve Tyler
no flags Details

Description Steve Tyler 2012-11-10 14:52:12 UTC
Created attachment 642180 [details]
screenshot showing "rsync exited with code 12" error message

Description of problem:
During installation from a Live CD, rsync may fail with a "No space left on device" error when copying files. This error is not reported to the user. Instead, the user sees the message: "rsync exited with code 12".

Version-Release number of selected component (if applicable):
anaconda-18.28-1.fc18.x86_64
Fedora-18-Beta-TC7-x86_64-Live-Desktop.iso

How reproducible:
Always.

Steps to Reproduce:
1. Create a 5120 MB disc image.
2. Install to the disc image from a Live CD:
$ qemu-kvm -m 1024 -hda f18-test-4.img -cdrom ~/xfr/fedora/F18/F18-Beta/TC7/Fedora-18-Beta-TC7-x86_64-Live-Desktop.iso -usb -vga qxl -boot menu=on -usbdevice mouse
  
Actual results:
When the copying fails, the message "rsync exited with code 12" is displayed.
See attached screenshot.

Expected results:
"No space left on device" is reported to the user.

Additional info:
The rsync exit values are listed near the end of the rsync man page:
http://rsync.samba.org/ftp/rsync/rsync.html

Exit value 12 may occur in several situations:
rsync current issues and debugging
http://rsync.samba.org/issues.html

See also:
Bug 868755 - error: rpmdb open failed

Comment 1 Steve Tyler 2012-11-10 14:57:21 UTC
Created attachment 642181 [details]
anaconda-tb-Og2Hmj log showing rsync error message "No space left on device"

The attached log shows the rsync does indeed report "No space left on device":

[snippet from attached anaconda-tb-Og2Hmj]
Nov 10 08:42:40 localhost program: rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
Nov 10 08:42:40 localhost program: rsync: write failed on "/mnt/sysimage/usr/share/locale/uk/LC_MESSAGES/gtk20.mo": No space left on device (28)
Nov 10 08:42:40 localhost program: rsync error: error in file IO (code 11) at receiver.c(322) [receiver=3.0.9]
Nov 10 08:42:40 localhost program: rsync: connection unexpectedly closed (1657900 bytes received so far) [sender]
Nov 10 08:42:40 localhost program: rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
Nov 10 08:42:40 localhost anaconda: rsync exited with code 12

Comment 2 Steve Tyler 2012-11-10 17:12:41 UTC
Simply displaying the error messages from rsync in a window might be sufficient. The problem is that iutil.py has two functions, neither of which quite does what is needed: Capture stderr in a buffer _and_ write stderr to a file.

ISTM, the functions could be generalized with one function that does it all:
1. Capture stdout and/or stderr in a buffer.
2. Write stdout and/or stderr to a file.

$ less -N anaconda-18.28-1/pyanaconda/iutil.py
...
     85 ## Run an external program and redirect the output to a file.
     86 # @param command The command to run.
     87 # @param argv A list of arguments.
     88 # @param stdin The file descriptor to read stdin from.
     89 # @param stdout The file descriptor to redirect stdout to.
     90 # @param stderr The file descriptor to redirect stderr to.
     91 # @param root The directory to chroot to before running command.
     92 # @return The return code of command.
     93 def execWithRedirect(command, argv, stdin = None, stdout = None,
     94                      stderr = None, root = '/', env_prune=[]):
...
    197 ## Run an external program and capture standard out.
    198 # @param command The command to run.
    199 # @param argv A list of arguments.
    200 # @param stdin The file descriptor to read stdin from.
    201 # @param stderr The file descriptor to redirect stderr to.
    202 # @param root The directory to chroot to before running command.
    203 # @param fatal Boolean to determine if non-zero exit is fatal.
    204 # @return The output of command from stdout.
    205 def execWithCapture(command, argv, stdin = None, stderr = None, root='/',
    206                     fatal = False):
...

Comment 3 Steve Tyler 2012-11-11 17:07:16 UTC
This bug is for the related problem on the DVD:
Bug 875422 - Anaconda fails with Could not run transaction if not enough disk space

Comment 4 Brian Lane 2012-11-12 16:22:06 UTC

*** This bug has been marked as a duplicate of bug 868755 ***


Note You need to log in before you can comment on or make changes to this bug.