|
@@ -770,28 +770,23 @@ Utilization of max. archive size: {csize_max:.0%}
|
|
|
try:
|
|
|
xattr.setxattr(fd or path, k, v, follow_symlinks=False)
|
|
|
except OSError as e:
|
|
|
+ msg_format = '%s: when setting extended attribute %s: %%s' % (path, k.decode())
|
|
|
if e.errno == errno.E2BIG:
|
|
|
- # xattr is too big
|
|
|
- logger.warning('%s: Value or key of extended attribute %s is too big for this filesystem' %
|
|
|
- (path, k.decode()))
|
|
|
- set_ec(EXIT_WARNING)
|
|
|
+ err_str = 'too big for this filesystem'
|
|
|
elif e.errno == errno.ENOTSUP:
|
|
|
- # xattrs not supported here
|
|
|
- logger.warning('%s: Extended attributes are not supported on this filesystem' % path)
|
|
|
- set_ec(EXIT_WARNING)
|
|
|
- elif e.errno == errno.EACCES:
|
|
|
- # permission denied to set this specific xattr (this may happen related to security.* keys)
|
|
|
- logger.warning('%s: Permission denied when setting extended attribute %s' % (path, k.decode()))
|
|
|
- set_ec(EXIT_WARNING)
|
|
|
+ err_str = 'xattrs not supported on this filesystem'
|
|
|
elif e.errno == errno.ENOSPC:
|
|
|
# no space left on device while setting this specific xattr
|
|
|
# ext4 reports ENOSPC when trying to set an xattr with >4kiB while ext4 can only support 4kiB xattrs
|
|
|
# (in this case, this is NOT a "disk full" error, just a ext4 limitation).
|
|
|
- logger.warning('%s: No space left on device while setting extended attribute %s (len = %d)' % (
|
|
|
- path, k.decode(), len(v)))
|
|
|
- set_ec(EXIT_WARNING)
|
|
|
+ err_str = 'no space left on device [xattr len = %d]' % (len(v), )
|
|
|
else:
|
|
|
- raise
|
|
|
+ # generic handler
|
|
|
+ # EACCES: permission denied to set this specific xattr (this may happen related to security.* keys)
|
|
|
+ # EPERM: operation not permitted
|
|
|
+ err_str = str(e)
|
|
|
+ logger.warning(msg_format % err_str)
|
|
|
+ set_ec(EXIT_WARNING)
|
|
|
# bsdflags include the immutable flag and need to be set last:
|
|
|
if not self.nobsdflags and 'bsdflags' in item:
|
|
|
try:
|