bugrdiff-backup - Bugs: bug #37415, Spurious "IOError: [Errno 28]...

 
 

bug #37415: Spurious "IOError: [Errno 28] No space left on device" when backing up NTFS to EXT4 in Ubuntu 12.04

Submitted by:  David W <davewood>
Submitted on:  Fri 21 Sep 2012 02:51:05 AM UTC  
 
Category:  None Severity:  3 - Normal
Item Group:  None Status:  Need Info
Privacy:  Public Assigned to:  None
Open/Closed:  Closed

Add a New Comment (Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Sat 08 Dec 2012 01:23:09 PM UTC, comment #1: 

The following work arounds the issue:

In function "write_to_rp(self, rp)" you have to add errno.ENOSPC to the list of the "allowed" errors. Reason: For too long filenames, the attribute seems not to be saveable on EXT4.

Kind Regards,

Frank

Frank Thiele <gertdetlef>
Fri 21 Sep 2012 02:51:05 AM UTC, original submission:  

I have backed up this filesystem many, many times. Suddenly, with Ubuntu 12.04, it was no longer possible. Some tiny files would bomb out with Errno 28 when backing up. Full stack trace below.

I verified that enormous amounts of free disk space were present, including on the specifically given tempdir, as well as enormous numbers of free inodes.

Looking closely at the failure, which is happening on xattr setting, I see rdiff-backup committers have already excluded many kinds of errors with a log message.

I suggest adding errno.ENOSPC to the list, since Ubuntu 12.04 now generates this as well. In other words, eas_acls.py line 119 would read:

errno.ENOENT, errno.EINVAL, errno.ENOSPC):

Full stack trace:

Exception '[Errno 28] No space left on device' raised of class '<type 'exceptions.IOError'>':
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 324, in Main
    take_action(rps)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in Backup
    backup.Mirror(rpin, rpout)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 38, in Mirror
    DestS.patch(dest_rpath, source_diffiter)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 232, in patch
    ITR(diff.index, diff)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/rorpiter.py", line 281, in _call_
    last_branch.fast_process(*args)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 529, in fast_process
    if self.patch_to_temp(mirror_rp, diff_rorp, tf):
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 559, in patch_to_temp
    rpath.copy_attribs(diff_rorp, new)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
    if Globals.eas_write: rpout.write_ea(rpin.get_ea())
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1347, in write_ea
    ea.write_to_rp(self)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
    rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in <module>
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 324, in Main
    take_action(rps)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 280, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/Main.py", line 346, in Backup
    backup.Mirror(rpin, rpout)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 38, in Mirror
    DestS.patch(dest_rpath, source_diffiter)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 232, in patch
    ITR(diff.index, diff)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/rorpiter.py", line 281, in _call_
    last_branch.fast_process(*args)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 529, in fast_process
    if self.patch_to_temp(mirror_rp, diff_rorp, tf):
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/backup.py", line 559, in patch_to_temp
    rpath.copy_attribs(diff_rorp, new)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
    if Globals.eas_write: rpout.write_ea(rpin.get_ea())
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/rpath.py", line 1347, in write_ea
    ea.write_to_rp(self)
  File "/usr/lib/python2.7/dist-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
    rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
IOError: [Errno 28] No space left on device
Traceback (most recent call last):
  File "./backup.py", line 226, in <module>
    subprocess.check_call(rdiffcommand)
  File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['rdiff-backup', '--exclude-other-filesystems', '--print-statistics', '--tempdir', '/mnt/backup/tempdir', '-v5', '--exclude-globbing-filelist', 'rdiff-exclusions', '--exclude-globbing-filelist', 'rdiff-exclusions-localhost-media,EC6C26516C2616BC', '/media/EC6C26516C2616BC', '/mnt/backup/localhost/fs-,media,EC6C26516C2616BC']' returned non-zero exit status 1

Until this is fixed, NTFS cannot be backed up on Ubuntu with rdiff-backup, which is a problem to anyone hoping to back up their dual-boot machine.

David W <davewood>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by davekempe (Updated the item)
  • -email is unavailable- added by gertdetlef (Posted a comment)
  • -email is unavailable- added by davewood (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

     

     

    Follow 2 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2016-02-12 davekempe StatusNone => Need Info
        Open/ClosedOpen => Closed

    Back to the top


    Powered by Savane 3.5