* Regression in 4.14-rc: CIFS SMB2+ combined with pythons xattr.listxattr leads to "IOError: [Errno 61] No data available"
@ 2017-09-26 16:54 Thorsten Leemhuis
[not found] ` <4d13dddc-2df2-4112-a214-15700c22ed50-rCxcAJFjeRkk+I/owrrOrA@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Thorsten Leemhuis @ 2017-09-26 16:54 UTC (permalink / raw)
To: Ronnie Sahlberg; +Cc: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA
Lo! Since updating to 4.14-rc my backup program rdiff-backup (written in
python) crashes with an error when it tries to create a backup on a
SMB2+ share mounted with CIFS (not sure which SMB version it is
exactly). I assume this started to happen due to the xattr support for
smb2+ that got merged in 8dc5b3a6cb2f (didn't find time to check a
revert yet). It still happens with rc2, so the fixes that got merged to
mainline at the end of last week didn't help.
Find the error output from rdiff-backup at the end of the mail. I did a
few tests and saw the following on 4.14-rc2; /mnt/tests/ is the share I
backup to.
"""
>>> import xattr
>>> xattr.listxattr('/mnt/tests/')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 61] No data available>>>
"""
When I mount that share with "-o vers=1.0" the command works just fine:
"""
>>> import xattr
>>> xattr.listxattr('/mnt/tests/')
[]
>>>
"""
FWIW, on 4.13.3 a SMB2+ mount of the share fails like this:
"""
>>> import xattr
>>> xattr.listxattr('/mnt/tests')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 95] Operation not supported>>>
"""
But it seems rdiff-backup can catch and handle this error just fine.
What to do about this? Ciao, Thorsten
P.S.: here is the complete error output from rdiff-backup:
> Found interrupted initial backup. Removing...
> Exception '[Errno 61] No data available' raised of class '<type 'exceptions.IOError'>':
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
> try: Main(arglist)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 324, in Main
> take_action(rps)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 280, in take_action
> elif action == "backup": Backup(rps[0], rps[1])
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 334, in Backup
> rpout.conn.fs_abilities.backup_set_globals(rpin, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 936, in backup_set_globals
> update_quoting = bsg.set_chars_to_quote(Globals.rbdir, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 734, in set_chars_to_quote
> self.get_ctq_from_fsas(), force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 765, in compare_ctq_file
> ctq_rp.write_string(actual_ctq)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1206, in write_string
> self.setdata()
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 909, in setdata
> if self.lstat(): self.conn.rpath.setdata_local(self)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1496, in setdata_local
> if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 597, in rpath_ea_get
> ea.read_from_rp(rp)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 60, in read_from_rp
> attr_list = rp.conn.xattr.listxattr(rp.path, 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/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
> try: Main(arglist)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 324, in Main
> take_action(rps)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 280, in take_action
> elif action == "backup": Backup(rps[0], rps[1])
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 334, in Backup
> rpout.conn.fs_abilities.backup_set_globals(rpin, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 936, in backup_set_globals
> update_quoting = bsg.set_chars_to_quote(Globals.rbdir, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 734, in set_chars_to_quote
> self.get_ctq_from_fsas(), force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 765, in compare_ctq_file
> ctq_rp.write_string(actual_ctq)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1206, in write_string
> self.setdata()
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 909, in setdata
> if self.lstat(): self.conn.rpath.setdata_local(self)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1496, in setdata_local
> if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 597, in rpath_ea_get
> ea.read_from_rp(rp)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 60, in read_from_rp
> attr_list = rp.conn.xattr.listxattr(rp.path, rp.issym())
> IOError: [Errno 61] No data availableFound interrupted initial backup. Removing...
> Exception '[Errno 61] No data available' raised of class '<type 'exceptions.IOError'>':
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
> try: Main(arglist)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 324, in Main
> take_action(rps)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 280, in take_action
> elif action == "backup": Backup(rps[0], rps[1])
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 334, in Backup
> rpout.conn.fs_abilities.backup_set_globals(rpin, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 936, in backup_set_globals
> update_quoting = bsg.set_chars_to_quote(Globals.rbdir, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 734, in set_chars_to_quote
> self.get_ctq_from_fsas(), force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 765, in compare_ctq_file
> ctq_rp.write_string(actual_ctq)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1206, in write_string
> self.setdata()
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 909, in setdata
> if self.lstat(): self.conn.rpath.setdata_local(self)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1496, in setdata_local
> if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 597, in rpath_ea_get
> ea.read_from_rp(rp)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 60, in read_from_rp
> attr_list = rp.conn.xattr.listxattr(rp.path, 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/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
> try: Main(arglist)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 324, in Main
> take_action(rps)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 280, in take_action
> elif action == "backup": Backup(rps[0], rps[1])
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/Main.py", line 334, in Backup
> rpout.conn.fs_abilities.backup_set_globals(rpin, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 936, in backup_set_globals
> update_quoting = bsg.set_chars_to_quote(Globals.rbdir, force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 734, in set_chars_to_quote
> self.get_ctq_from_fsas(), force)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/fs_abilities.py", line 765, in compare_ctq_file
> ctq_rp.write_string(actual_ctq)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1206, in write_string
> self.setdata()
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 909, in setdata
> if self.lstat(): self.conn.rpath.setdata_local(self)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py", line 1496, in setdata_local
> if Globals.eas_conn: rpath.data['ea'] = ea_get(rpath)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 597, in rpath_ea_get
> ea.read_from_rp(rp)
> File "/usr/lib64/python2.7/site-packages/rdiff_backup/eas_acls.py", line 60, in read_from_rp
> attr_list = rp.conn.xattr.listxattr(rp.path, rp.issym())
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-10-18 12:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-26 16:54 Regression in 4.14-rc: CIFS SMB2+ combined with pythons xattr.listxattr leads to "IOError: [Errno 61] No data available" Thorsten Leemhuis
[not found] ` <4d13dddc-2df2-4112-a214-15700c22ed50-rCxcAJFjeRkk+I/owrrOrA@public.gmane.org>
2017-10-18 12:52 ` Aurélien Aptel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox