New submission from hans.meine <hans_me...@gmx.net>:

This is a near duplicate of #24564, but has a slightly smaller scope.

We're using a CIFS filesystem and noticed that copying files *from* that 
filesystem to a local path with `shutil.copy2` does not work, but fails with an 
`OSError: [Errno 22] Invalid argument`.  This is because `copy2()` calls 
`copystat()` which contains

    try:
        names = os.listxattr(src, follow_symlinks=follow_symlinks)
    except OSError as e:
        if e.errno not in (errno.ENOTSUP, errno.ENODATA):
            raise

In our case with our CIFS mount, and in the NFS mounts mentioned in #24564, 
`os.listxattr()` raises an IOError with `errno.EINVAL` (22).  It was proposed 
in #24564 already to also ignore EINVAL, but with this issue I wanted to 
specifically propose to do so for the *reading* part.  While I also think that 
copy2() should work with both source *and* target filesystems not supporting 
xattr, our use case where the likelihood of data loss is zero (because there 
have never been xattr in the first place) is particularly annoying.

----------
components: Library (Lib)
messages: 341857
nosy: hans-meine
priority: normal
severity: normal
status: open
title: shutil.copy2 fails with even with source network filesystem not 
supporting extended attributes
versions: Python 2.7, Python 3.5, Python 3.6, Python 3.7, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue36850>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to