rdiff-back crashes when destination is my USB drive with IOError: [errno71]

Bug #86913 reported by Tobias Wolf
4
Affects Status Importance Assigned to Milestone
rdiff-backup (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

Binary package hint: rdiff-backup

My usual backup procedure (not used since December/Edgy :-/ ) doesn’t work anymore. rdiff-backup bombs out and throws a longish traceback at me.

# /usr/bin/rdiff-backup --print-statistics --exclude '/home/*/.gnupg' --exclude '/home/*/.ssh' --exclude '/home/*/.local/share/Trash' --exclude '/home/*/.Trash' --exclude '/home/*/.thumbnails' --exclude '/home/*/.beagle' --exclude '/home/*/.opera/cache4' --exclude '/var/spool' --exclude '/var/cache' --include '/bin' --include '/boot' --include '/dev' --include '/etc' --include '/home' --include '/lib' --include '/opt' --include '/root' --include '/sbin' --include '/usr' --include '/var' --exclude '/*' / /media/backupdisk/BACKUP/

Exception '[Errno 71] Protocol error: '/dev/bus/usb/.usbfs/002/004'' raised of class '<type 'exceptions.IOError'>':
  File "/var/lib/python-support/python2.5/rdiff_backup/robust.py", line 32, in check_common_error
    try: return function(*args)
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 1024, in open
    else: return open(self.path, mode)

Exception '[Errno 71] Protocol error: '/dev/bus/usb/.usbfs/002/004'' raised of class '<type 'exceptions.IOError'>':
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 295, in error_check_Main
    try: Main(arglist)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 315, in Main
    take_action(rps)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 271, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 337, in Backup
    backup.Mirror(rpin, rpout)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 38, in Mirror
    DestS.patch(dest_rpath, source_diffiter)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 216, in patch
    for diff in rorpiter.FillInIter(source_diffiter, dest_rpath):
  File "/var/lib/python-support/python2.5/rdiff_backup/rorpiter.py", line 177, in FillInIter
    for rp in rpiter:
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 114, in get_diffs
    else: attach_snapshot(diff_rorp, src_rp)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 87, in attach_snapshot
    error_handler, rpath.RPath.open, (src_rp, "rb"))
  File "/var/lib/python-support/python2.5/rdiff_backup/robust.py", line 32, in check_common_error
    try: return function(*args)
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 1024, in open
    else: return open(self.path, mode)

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 23, in <module>
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 295, in error_check_Main
    try: Main(arglist)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 315, in Main
    take_action(rps)
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 271, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 337, in Backup
    backup.Mirror(rpin, rpout)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 38, in Mirror
    DestS.patch(dest_rpath, source_diffiter)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 216, in patch
    for diff in rorpiter.FillInIter(source_diffiter, dest_rpath):
  File "/var/lib/python-support/python2.5/rdiff_backup/rorpiter.py", line 177, in FillInIter
    for rp in rpiter:
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 114, in get_diffs
    else: attach_snapshot(diff_rorp, src_rp)
  File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 87, in attach_snapshot
    error_handler, rpath.RPath.open, (src_rp, "rb"))
  File "/var/lib/python-support/python2.5/rdiff_backup/robust.py", line 32, in check_common_error
    try: return function(*args)
  File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 1024, in open
    else: return open(self.path, mode)
IOError: [Errno 71] Protocol error: '/dev/bus/usb/.usbfs/002/004'

I don’t know what the significance of this device is but when I want to inspect it is not there only with an id incemented by 1, i.e. here,

/dev/bus/usb/.usbfs/002/005

On the next try the error will contain 005 and the present device will be 006.

The destination is a bipartite USB HD.

/dev/sda2 on /media/NTFS type ntfs (rw,noexec,nosuid,nodev,umask=222,utf8)
/dev/sda3 on /media/backupdisk type ext3 (rw,noexec,nosuid,nodev)

Not very reassuring for a backup program, no?

Revision history for this message
Tobias Wolf (towolf) wrote :

I found the source of this problem. It was not that the destination was a USB drive but that it was among the included source dirs. After excluding /dev/bus/usb the Job went through.

Revision history for this message
Andy Price (andy-price) wrote :

Thanks for your bug report. I can't reproduce the bug you've described in the latest rdiff-backup in gutsy gibbon so I'll close this bug report. If you find it still isn't fixed, please feel free to reopen this bug. Thanks.

Changed in rdiff-backup:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.