bugrdiff-backup - Bugs: bug #27795, Symlink to self on filesystem...

 
 

bug #27795: Symlink to self on filesystem results in xattr related crash

Submitted by:  Simon Blandford <sblandford>
Submitted on:  Sat 24 Oct 2009 07:37:00 AM UTC  
 
Category: NoneSeverity: 3 - Normal
Item Group: NoneStatus: None
Privacy: PublicAssigned to: None
Open/Closed: Open

Add a New Comment(Rich Markup)
   

You are not logged in

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

 

Sat 24 Oct 2009 07:37:00 AM UTC, original submission:

Using rdiff-backup-1.2.8-1.el5.rf with pyxattr-0.4.0-2.el5 on Centos 5.3.

The filesystem being backed up contains a symlink to itself.
[root@staticweb ~]# cd /usr/local/include/libpng/
[root@staticweb libpng]# ll
total 4
lrwxrwxrwx 1 root root 8 Apr 29 13:02 libpng12 -> libpng12

This results in rdiff-backup crashing when attempting to make a backup of it. Although symlinks to self are not useful rdiff-backup should not crash. rdiff-backup only started crashing on this condition since I installed pyxattr.

diff-backup --exclude-sockets --exclude-globbing-filelist /mnt/xen1_backup/staticweb.xyz.com/config/rdiff_exclude_list --force 124.100.13.8::/mnt/
snapshots/ /mnt/xen1_backup/staticweb.xyz.com/data
Warning: Access Control List file not found
Warning: Extended Attributes file not found
Exception '[Errno 40] Too many levels of symbolic links: '/mnt/xen1_backup/staticweb.xyz.com/data/usr/local/include/libpng/rdiff-backup.tmp.217089'
' raised of class 'exceptions.IOError':
Traceback (most recent call last):
File "/usr/bin/rdiff-backup", line 30, in ?
rdiff_backup.Main.error_check_Main(sys.argv[1:])
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 280, in take_action
elif action == "backup": Backup(rps[0], rps[1])
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 343, in Backup
backup.Mirror_and_increment(rpin, rpout, incdir)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 51, in Mirror_and_increment
DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 243, in patch_and_increment
ITR(diff.index, diff)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/rorpiter.py", line 281, in _call_
last_branch.fast_process(*args)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 692, in fast_process
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 553, in patch_to_temp
result = self.patch_snapshot_to_temp(diff_rorp, new)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 578, in patch_snapshot_to_temp
rpath.copy_attribs(diff_rorp, new)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
if Globals.eas_write: rpout.write_ea(rpin.get_ea())
File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 1347, in write_ea
ea.write_to_rp(self)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 188, in setxattr
return xattr(f).set(attr, value, options=options)
File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 81, in set
self._set(name, value, 0, options | self.options)
File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 16, in _func
return func(first, *args)
IOError: [Errno 40] Too many levels of symbolic links: '/mnt/xen1_backup/staticweb.xyz.com/data/usr/local/include/libpng/rdiff-backup.tmp.217089'

Traceback (most recent call last):
File "/usr/bin/rdiff-backup", line 30, in ?
rdiff_backup.Main.error_check_Main(sys.argv[1:])
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
try: Main(arglist)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 324, in Main
take_action(rps)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 280, in take_action
elif action == "backup": Backup(rps[0], rps[1])
File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 343, in Backup
backup.Mirror_and_increment(rpin, rpout, incdir)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 51, in Mirror_and_increment
DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 243, in patch_and_increment
ITR(diff.index, diff)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/rorpiter.py", line 281, in _call_
last_branch.fast_process(*args)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 692, in fast_process
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 553, in patch_to_temp
result = self.patch_snapshot_to_temp(diff_rorp, new)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 578, in patch_snapshot_to_temp
rpath.copy_attribs(diff_rorp, new)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
if Globals.eas_write: rpout.write_ea(rpin.get_ea())
File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 1347, in write_ea
ea.write_to_rp(self)
File "/usr/lib64/python2.4/site-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 188, in setxattr
return xattr(f).set(attr, value, options=options)
File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 81, in set
self._set(name, value, 0, options | self.options)
File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 16, in _func
return func(first, *args)
IOError: [Errno 40] Too many levels of symbolic links: '/mnt/xen1_backup/staticweb.xyz.com/data/usr/local/include/libpng/rdiff-backup.tmp.217089'
Fatal Error: Lost connection to the remote system

Simon Blandford <sblandford>

 

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

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by sblandford (Submitted the item)
  •  

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

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    No Changes Have Been Made to This Item

    Back to the top


    Powered by Savane 3.1-cleanup1