diff --git a/src/borg/platform/linux.pyx b/src/borg/platform/linux.pyx index e849dbba3..d7680ccd6 100644 --- a/src/borg/platform/linux.pyx +++ b/src/borg/platform/linux.pyx @@ -149,9 +149,12 @@ def set_flags(path, bsd_flags, fd=None): if open_fd: fd = os.open(path, os.O_RDONLY|os.O_NONBLOCK|os.O_NOFOLLOW) try: - # Get current flags. If this fails, fall back to 0 so we can still attempt to set. + # Get current flags. if ioctl(fd, FS_IOC_GETFLAGS, &flags) == -1: - flags = 0 + # If this fails, give up because it is either not supported by the fs + # or maybe not permitted? If we can't determine the current flags, + # we better not risk corrupting them by setflags, see the comment below. + return # give up silently # Replace only the bits we actually want to influence, keep others. # We can't just set all flags to the archived value, because we might