Bug 1384606

Summary: py3 test_os.ExtendedAttributeTests fails on XFS
Product: [Fedora] Fedora Reporter: Dan Horák <dan>
Component: kernelAssignee: Kernel Maintainer List <kernel-maint>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: bkabrda, cstratak, esandeen, gansalmon, ichavero, itamar, jonathan, kernel-maint, madhu.chinakonda, mchehab, mhroncok, pviktori, rkuska, tomspur, torsava
Target Milestone: ---   
Target Release: ---   
Hardware: s390x   
OS: Unspecified   
Whiteboard:
Fixed In Version: kernel-4.8.3-300.fc25 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-10-22 12:50:39 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 467765    
Attachments:
Description Flags
standalone test case none

Description Dan Horák 2016-10-13 16:18:59 UTC
test_os started to fail with the latest python3 build on s390x, the difference to previous (successful) build might be the builders are now F-24 based, the difference to primary builders is that we use XFS for root fs

from build.log
...
[223/397] test_os
test_blocking (test.test_os.BlockingTests) ... ok
test_walk_bad_dir (test.test_os.BytesWalkTests) ... ok
test_walk_bottom_up (test.test_os.BytesWalkTests) ... ok
test_walk_prune (test.test_os.BytesWalkTests) ... ok
test_walk_symlink (test.test_os.BytesWalkTests) ... ok
test_walk_topdown (test.test_os.BytesWalkTests) ... ok
test_cpu_count (test.test_os.CPUCountTests) ... ok
test_chown (test.test_os.ChownFileTests) ... skipped 'test needs more than one group'
test_chown_uid_gid_arguments_must_be_index (test.test_os.ChownFileTests) ... ok
test_chown_with_root (test.test_os.ChownFileTests) ... skipped 'test needs root privilege and more than one user'
test_chown_without_permission (test.test_os.ChownFileTests) ... ok
test_devnull (test.test_os.DevNullTests) ... ok
test_bad_fd (test.test_os.DeviceEncodingTests) ... ok
test_device_encoding (test.test_os.DeviceEncodingTests) ... skipped 'test requires a tty and either Windows or nl_langinfo(CODESET)'
test___repr__ (test.test_os.EnvironTests)
Check that the repr() of os.environ looks like environ({...}). ... ok
test_bool (test.test_os.EnvironTests) ... ok
test_constructor (test.test_os.EnvironTests) ... ok
test_environb (test.test_os.EnvironTests) ... skipped 'U+20AC character is not encodable to ascii'
test_get (test.test_os.EnvironTests) ... ok
test_get_exec_path (test.test_os.EnvironTests) ... ok
test_getitem (test.test_os.EnvironTests) ... ok
test_items (test.test_os.EnvironTests) ... ok
test_key_type (test.test_os.EnvironTests) ... ok
test_keys (test.test_os.EnvironTests) ... ok
test_keyvalue_types (test.test_os.EnvironTests) ... ok
test_len (test.test_os.EnvironTests) ... ok
test_os_popen_iter (test.test_os.EnvironTests) ... ok
test_pop (test.test_os.EnvironTests) ... ok
test_popitem (test.test_os.EnvironTests) ... ok
test_read (test.test_os.EnvironTests) ... ok
test_setdefault (test.test_os.EnvironTests) ... ok
test_unset_error (test.test_os.EnvironTests) ... ok
test_update (test.test_os.EnvironTests) ... ok
test_update2 (test.test_os.EnvironTests) ... ok
test_values (test.test_os.EnvironTests) ... ok
test_write (test.test_os.EnvironTests) ... ok
test_execvpe_with_bad_arglist (test.test_os.ExecTests) ... ok
test_execvpe_with_bad_program (test.test_os.ExecTests) ... ok
test_internal_execvpe_str (test.test_os.ExecTests) ... ok
test_os_all (test.test_os.ExportsTests) ... ok
test_fds (test.test_os.ExtendedAttributeTests) ... FAIL
test_lpath (test.test_os.ExtendedAttributeTests) ... FAIL
test_simple (test.test_os.ExtendedAttributeTests) ... FAIL
test_dup (test.test_os.FDInheritanceTests) ... ok
test_dup2 (test.test_os.FDInheritanceTests) ... ok
test_get_inheritable_cloexec (test.test_os.FDInheritanceTests) ... ok
test_get_set_inheritable (test.test_os.FDInheritanceTests) ... ok
test_open (test.test_os.FDInheritanceTests) ... ok
test_openpty (test.test_os.FDInheritanceTests) ... ok
test_pipe (test.test_os.FDInheritanceTests) ... ok
test_set_inheritable_cloexec (test.test_os.FDInheritanceTests) ... ok
test_identity (test.test_os.FSEncodingTests) ... ok
test_nop (test.test_os.FSEncodingTests) ... ok
test_access (test.test_os.FileTests) ... ok
test_closerange (test.test_os.FileTests) ... skipped "couldn't allocate two consecutive fds"
test_fdopen (test.test_os.FileTests) ... ok
test_large_read (test.test_os.FileTests) ... skipped 'not enough memory: 2.0G minimum needed'
test_open_keywords (test.test_os.FileTests) ... ok
test_read (test.test_os.FileTests) ... ok
test_rename (test.test_os.FileTests) ... ok
test_replace (test.test_os.FileTests) ... ok
test_symlink_keywords (test.test_os.FileTests) ... ok
test_write (test.test_os.FileTests) ... ok
test_write_windows_console (test.test_os.FileTests) ... skipped 'test specific to the Windows console'
test_compare_to_walk (test.test_os.FwalkTests) ... ok
test_dir_fd (test.test_os.FwalkTests) ... ok
test_fd_leak (test.test_os.FwalkTests) ... ok
test_walk_bad_dir (test.test_os.FwalkTests) ... ok
test_walk_bottom_up (test.test_os.FwalkTests) ... ok
test_walk_prune (test.test_os.FwalkTests) ... ok
test_walk_symlink (test.test_os.FwalkTests) ... ok
test_walk_topdown (test.test_os.FwalkTests) ... ok
test_yields_correct_dir_fd (test.test_os.FwalkTests) ... ok
test_link (test.test_os.LinkTests) ... ok
test_link_bytes (test.test_os.LinkTests) ... ok
test_unicode_name (test.test_os.LinkTests) ... skipped 'Unable to encode for this platform.'
test_getlogin (test.test_os.LoginTests) ... skipped 'Skip due to platform/environment differences on *NIX buildbots'
test_exist_ok_existing_directory (test.test_os.MakedirTests) ... ok
test_exist_ok_existing_regular_file (test.test_os.MakedirTests) ... ok
test_exist_ok_s_isgid_directory (test.test_os.MakedirTests) ... ok
test_makedir (test.test_os.MakedirTests) ... ok
test_directory_link_nonlocal (test.test_os.NonLocalSymlinkTests) ... ok
test_oserror_filename (test.test_os.OSErrorTests) ... ok
test_listdir (test.test_os.Pep383Tests) ... ok
test_open (test.test_os.Pep383Tests) ... ok
test_stat (test.test_os.Pep383Tests) ... ok
test_statvfs (test.test_os.Pep383Tests) ... ok
test_getppid (test.test_os.PidTests) ... ok
test_waitpid (test.test_os.PidTests) ... ok
test_setegid (test.test_os.PosixUidGidTests) ... ok
test_seteuid (test.test_os.PosixUidGidTests) ... ok
test_setgid (test.test_os.PosixUidGidTests) ... ok
test_setregid (test.test_os.PosixUidGidTests) ... ok
test_setregid_neg1 (test.test_os.PosixUidGidTests) ... ok
test_setreuid (test.test_os.PosixUidGidTests) ... ok
test_setreuid_neg1 (test.test_os.PosixUidGidTests) ... ok
test_setuid (test.test_os.PosixUidGidTests) ... ok
test_set_get_priority (test.test_os.ProgramPriorityTests) ... ok
test_remove_all (test.test_os.RemoveDirsTests) ... ok
test_remove_nothing (test.test_os.RemoveDirsTests) ... ok
test_remove_partial (test.test_os.RemoveDirsTests) ... ok
test_15261 (test.test_os.StatAttributeTests) ... skipped 'Win32 specific tests'
test_1686475 (test.test_os.StatAttributeTests) ... skipped 'Win32 specific tests'
test_file_attributes (test.test_os.StatAttributeTests) ... skipped 'st_file_attributes is Win32 specific'
test_stat_attributes (test.test_os.StatAttributeTests) ... ok
test_stat_attributes_bytes (test.test_os.StatAttributeTests) ... ok
test_stat_result_pickle (test.test_os.StatAttributeTests) ... ok
test_statvfs_attributes (test.test_os.StatAttributeTests) ... ok
test_statvfs_result_pickle (test.test_os.StatAttributeTests) ... ok
test_does_not_crash (test.test_os.TermsizeTests)
Check if get_terminal_size() returns a meaningful value. ... skipped 'failed to query terminal size'
test_stty_match (test.test_os.TermsizeTests)
Check if stty returns the same results ... stty: 'standard input': Inappropriate ioctl for device
skipped 'stty invocation failed'
test_blocking (test.test_os.TestInvalidFD) ... ok
test_closerange (test.test_os.TestInvalidFD) ... skipped 'Unable to acquire a range of invalid file descriptors'
test_dup (test.test_os.TestInvalidFD) ... ok
test_dup2 (test.test_os.TestInvalidFD) ... ok
test_fchdir (test.test_os.TestInvalidFD) ... ok
test_fchmod (test.test_os.TestInvalidFD) ... ok
test_fchown (test.test_os.TestInvalidFD) ... ok
test_fdatasync (test.test_os.TestInvalidFD) ... ok
test_fdopen (test.test_os.TestInvalidFD) ... ok
test_fpathconf (test.test_os.TestInvalidFD) ... ok
test_fstat (test.test_os.TestInvalidFD) ... ok
test_fstatvfs (test.test_os.TestInvalidFD) ... ok
test_fsync (test.test_os.TestInvalidFD) ... ok
test_ftruncate (test.test_os.TestInvalidFD) ... ok
test_inheritable (test.test_os.TestInvalidFD) ... ok
test_isatty (test.test_os.TestInvalidFD) ... ok
test_lseek (test.test_os.TestInvalidFD) ... ok
test_read (test.test_os.TestInvalidFD) ... ok
test_readv (test.test_os.TestInvalidFD) ... ok
test_tcgetpgrp (test.test_os.TestInvalidFD) ... ok
test_tcsetpgrpt (test.test_os.TestInvalidFD) ... ok
test_ttyname (test.test_os.TestInvalidFD) ... ok
test_write (test.test_os.TestInvalidFD) ... ok
test_writev (test.test_os.TestInvalidFD) ... ok
test_attributes (test.test_os.TestScandir) ... ok
test_bad_path_type (test.test_os.TestScandir) ... ok
test_broken_symlink (test.test_os.TestScandir) ... ok
test_bytes (test.test_os.TestScandir) ... ok
test_consume_iterator_twice (test.test_os.TestScandir) ... ok
test_current_directory (test.test_os.TestScandir) ... ok
test_empty_path (test.test_os.TestScandir) ... ok
test_removed_dir (test.test_os.TestScandir) ... ok
test_removed_file (test.test_os.TestScandir) ... ok
test_repr (test.test_os.TestScandir) ... ok
test_flags (test.test_os.TestSendfile) ... skipped 'requires headers and trailers support'
test_headers (test.test_os.TestSendfile) ... skipped 'requires headers and trailers support'
test_invalid_offset (test.test_os.TestSendfile) ... ok
test_keywords (test.test_os.TestSendfile) ... ok
test_offset_overflow (test.test_os.TestSendfile) ... ok
test_send_at_certain_offset (test.test_os.TestSendfile) ... ok
test_send_whole_file (test.test_os.TestSendfile) ... ok
test_trailers (test.test_os.TestSendfile) ... skipped 'requires headers and trailers support'
test_urandom_failure (test.test_os.URandomFDTests) ... skipped 'os.random() does not use a file descriptor'
test_urandom_fd_closed (test.test_os.URandomFDTests) ... skipped 'os.random() does not use a file descriptor'
test_urandom_fd_reopened (test.test_os.URandomFDTests) ... skipped 'os.random() does not use a file descriptor'
test_urandom_length (test.test_os.URandomTests) ... ok
test_urandom_subprocess (test.test_os.URandomTests) ... ok
test_urandom_value (test.test_os.URandomTests) ... ok
test_large_time (test.test_os.UtimeTests) ... skipped 'requires NTFS'
test_utime (test.test_os.UtimeTests) ... ok
test_utime_by_indexed (test.test_os.UtimeTests) ... ok
test_utime_by_times (test.test_os.UtimeTests) ... ok
test_utime_current (test.test_os.UtimeTests) ... ok
test_utime_current_old (test.test_os.UtimeTests) ... ok
test_utime_dir_fd (test.test_os.UtimeTests) ... ok
test_utime_directory (test.test_os.UtimeTests) ... ok
test_utime_fd (test.test_os.UtimeTests) ... ok
test_utime_invalid_arguments (test.test_os.UtimeTests) ... ok
test_utime_nofollow_symlinks (test.test_os.UtimeTests) ... ok
test_walk_bad_dir (test.test_os.WalkTests) ... ok
test_walk_bottom_up (test.test_os.WalkTests) ... ok
test_walk_prune (test.test_os.WalkTests) ... ok
test_walk_symlink (test.test_os.WalkTests) ... ok
test_walk_topdown (test.test_os.WalkTests) ... ok
test_deprecated (test.test_os.Win32DeprecatedBytesAPI) ... skipped 'Win32 specific tests'
test_symlink (test.test_os.Win32DeprecatedBytesAPI) ... skipped 'Win32 specific tests'
test_chdir (test.test_os.Win32ErrorTests) ... skipped 'Win32 specific tests'
test_chmod (test.test_os.Win32ErrorTests) ... skipped 'Win32 specific tests'
test_mkdir (test.test_os.Win32ErrorTests) ... skipped 'Win32 specific tests'
test_remove (test.test_os.Win32ErrorTests) ... skipped 'Win32 specific tests'
test_rename (test.test_os.Win32ErrorTests) ... skipped 'Win32 specific tests'
test_utime (test.test_os.Win32ErrorTests) ... skipped 'Win32 specific tests'
test_create_junction (test.test_os.Win32JunctionTests) ... skipped 'Win32 specific tests'
test_unlink_removes_junction (test.test_os.Win32JunctionTests) ... skipped 'Win32 specific tests'
test_CTRL_BREAK_EVENT (test.test_os.Win32KillTests) ... skipped 'Win32 specific tests'
test_CTRL_C_EVENT (test.test_os.Win32KillTests) ... skipped 'Win32 specific tests'
test_kill_int (test.test_os.Win32KillTests) ... skipped 'Win32 specific tests'
test_kill_sigterm (test.test_os.Win32KillTests) ... skipped 'Win32 specific tests'
test_listdir_extended_path (test.test_os.Win32ListdirTests)
Test when the path starts with '\\?\'. ... skipped 'Win32 specific tests'
test_listdir_no_extended_path (test.test_os.Win32ListdirTests)
Test when the path is not an "extended" path. ... skipped 'Win32 specific tests'
test_12084 (test.test_os.Win32SymlinkTests) ... skipped 'Win32 specific tests'
test_directory_link (test.test_os.Win32SymlinkTests) ... skipped 'Win32 specific tests'
test_file_link (test.test_os.Win32SymlinkTests) ... skipped 'Win32 specific tests'
test_isdir_on_directory_link_to_missing_target (test.test_os.Win32SymlinkTests) ... skipped 'Win32 specific tests'
test_remove_directory_link_to_missing_target (test.test_os.Win32SymlinkTests) ... skipped 'Win32 specific tests'
test_rmdir_on_directory_link_to_missing_target (test.test_os.Win32SymlinkTests) ... test test_os failed
skipped 'Win32 specific tests'
======================================================================
FAIL: test_fds (test.test_os.ExtendedAttributeTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2533, in test_fds
    self._check_xattrs(getxattr, setxattr, removexattr, listxattr)
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2508, in _check_xattrs
    self._check_xattrs_str(str, *args, **kwargs)
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2503, in _check_xattrs_str
    self.assertEqual(set(listxattr(fn)), set(init_xattr) | set(many))
AssertionError: Items in the first set but not the second:
'ser.test99'
Items in the second set but not the first:
'user.test3'
'user.test20'
'user.test52'
'user.test67'
'user.test76'
'user.test41'
'user.test57'
'user.test9'
'user.test50'
'user.test93'
'user.test90'
'user.test46'
'user.test68'
'user.test71'
'user.test61'
'user.test1'
'user.test75'
'user.test69'
'user.test2'
'user.test79'
'user.test54'
'user.test21'
'user.test34'
'user.test10'
'user.test14'
'user.test44'
'user.test33'
'user.test58'
'user.test37'
'user.test18'
'user.test32'
'user.test56'
'user.test77'
'user.test98'
'user.test53'
'user.test60'
'user.test92'
'user.test38'
'user.test95'
'user.test36'
'user.test62'
'user.test91'
'user.test97'
'user.test66'
'user.test64'
'user.test72'
'user.test27'
'user.test96'
'user.test26'
'user.test39'
'user.test47'
'user.test99'
'user.test78'
'user.test42'
'user.test55'
'user.test30'
'user.test22'
'user.test7'
'user.test19'
'user.test4'
'user.test94'
'user.test8'
'user.test24'
'user.test0'
'user.test73'
'user.test65'
'user.test51'
'user.test11'
'user.test5'
'user.test43'
'user.test12'
'user.test49'
'user.test23'
'user.test40'
'user.test31'
'user.test63'
'user.test59'
'user.test48'
'user.test35'
'user.test6'
'user.test15'
'user.test70'
'user.test16'
'user.test74'
'user.test28'
'user.test29'
'user.test45'
'user.test25'
'user.test13'
'user.test17'
======================================================================
FAIL: test_lpath (test.test_os.ExtendedAttributeTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2518, in test_lpath
    os.listxattr, follow_symlinks=False)
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2508, in _check_xattrs
    self._check_xattrs_str(str, *args, **kwargs)
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2503, in _check_xattrs_str
    self.assertEqual(set(listxattr(fn)), set(init_xattr) | set(many))
AssertionError: Items in the first set but not the second:
'ser.test99'
Items in the second set but not the first:
'user.test3'
'user.test20'
'user.test52'
'user.test67'
'user.test76'
'user.test41'
'user.test57'
'user.test9'
'user.test50'
'user.test93'
'user.test90'
'user.test46'
'user.test68'
'user.test71'
'user.test61'
'user.test1'
'user.test75'
'user.test69'
'user.test2'
'user.test79'
'user.test54'
'user.test21'
'user.test34'
'user.test10'
'user.test14'
'user.test44'
'user.test33'
'user.test58'
'user.test37'
'user.test18'
'user.test32'
'user.test56'
'user.test77'
'user.test98'
'user.test53'
'user.test60'
'user.test92'
'user.test38'
'user.test95'
'user.test36'
'user.test62'
'user.test91'
'user.test97'
'user.test66'
'user.test64'
'user.test72'
'user.test27'
'user.test96'
'user.test26'
'user.test39'
'user.test47'
'user.test99'
'user.test78'
'user.test42'
'user.test55'
'user.test30'
'user.test22'
'user.test7'
'user.test19'
'user.test4'
'user.test94'
'user.test8'
'user.test24'
'user.test0'
'user.test73'
'user.test65'
'user.test51'
'user.test11'
'user.test5'
'user.test43'
'user.test12'
'user.test49'
'user.test23'
'user.test40'
'user.test31'
'user.test63'
'user.test59'
'user.test48'
'user.test35'
'user.test6'
'user.test15'
'user.test70'
'user.test16'
'user.test74'
'user.test28'
'user.test29'
'user.test45'
'user.test25'
'user.test13'
'user.test17'
======================================================================
FAIL: test_simple (test.test_os.ExtendedAttributeTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2514, in test_simple
    os.listxattr)
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2508, in _check_xattrs
    self._check_xattrs_str(str, *args, **kwargs)
  File "/builddir/build/BUILD/Python-3.5.2/Lib/test/test_os.py", line 2503, in _check_xattrs_str
    self.assertEqual(set(listxattr(fn)), set(init_xattr) | set(many))
AssertionError: Items in the first set but not the second:
'ser.test99'
Items in the second set but not the first:
'user.test3'
'user.test20'
'user.test52'
'user.test67'
'user.test76'
'user.test41'
'user.test57'
'user.test9'
'user.test50'
'user.test93'
'user.test90'
'user.test46'
'user.test68'
'user.test71'
'user.test61'
'user.test1'
'user.test75'
'user.test69'
'user.test2'
'user.test79'
'user.test54'
'user.test21'
'user.test34'
'user.test10'
'user.test14'
'user.test44'
'user.test33'
'user.test58'
'user.test37'
'user.test18'
'user.test32'
'user.test56'
'user.test77'
'user.test98'
'user.test53'
'user.test60'
'user.test92'
'user.test38'
'user.test95'
'user.test36'
'user.test62'
'user.test91'
'user.test97'
'user.test66'
'user.test64'
'user.test72'
'user.test27'
'user.test96'
'user.test26'
'user.test39'
'user.test47'
'user.test99'
'user.test78'
'user.test42'
'user.test55'
'user.test30'
'user.test22'
'user.test7'
'user.test19'
'user.test4'
'user.test94'
'user.test8'
'user.test24'
'user.test0'
'user.test73'
'user.test65'
'user.test51'
'user.test11'
'user.test5'
'user.test43'
'user.test12'
'user.test49'
'user.test23'
'user.test40'
'user.test31'
'user.test63'
'user.test59'
'user.test48'
'user.test35'
'user.test6'
'user.test15'
'user.test70'
'user.test16'
'user.test74'
'user.test28'
'user.test29'
'user.test45'
'user.test25'
'user.test13'
'user.test17'
----------------------------------------------------------------------
Ran 197 tests in 0.971s
FAILED (failures=3, skipped=44)

for full logs please see http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2372938

Version-Release number of selected component (if applicable):
python3-3.5.2-5.fc26

Comment 1 Charalampos Stratakis 2016-10-13 19:18:41 UTC
Hmm this is weird.

An upstream patch [0] from 3.5.3 was backported to python3 in rawhide in order to fix a FTBFS with the rebased OpenSSL 1.1.0. (Basically to make the ssl and hashlib python modules OpenSSL 1.1.0 compatible)

Latest release is python3-3.5.2-6.fc26 though, where I made some minor fixes related to that, I tried a scratch build but it still fails with the same error: [1]

In rawhide however python 3.6 will be deployed soon(ish) so I tried to build the 3.6 beta 2, which fails with a different error so I guess it would be better to debug that one [2]

Will try to find some time next week for it.

[0] https://bugs.python.org/issue26470
[1] http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2373048
[2] http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2373050

Comment 2 Dan Horák 2016-10-14 21:39:38 UTC
I run few more tests by rebuilding the python3-3.5.2-5.fc26 source rpm on a F-24 based machines (ext4 and xfs root fs) using
mock -r fedora-rawhide-s390x python3-3.5.2-5.fc26.src.rpm
(all that is close how the s390 koji build environment looks) and the results are
 - ext4 passes with kernel 4.7.3-200.fc24.s390x
 - xfs  passes with kernel 4.6.4-301.fc24.s390x
        fails  with kernel 4.7.3-200.fc24.s390x

Is it possible to prepare a standalone test case that could the XFS filesystem devels use to analyse the issue? The problem is rather in XFS in kernel than in python.

Comment 3 Dan Horák 2016-10-17 08:43:11 UTC
few more results
s390x xfs
           fails  with kernel 4.8.1-1.fc25.s390x
           fails  with kernel 4.8.0-0.rc7.git3.1.fc26.s390x (local rebuild on f26)

ppc64 xfs passes with kernel 4.5.5-300.fc24.ppc64
          fails  with kernel 4.7.4-200.fc24.ppc64

=> (my conclusion) something broke in XFS extended attributes on big endians (only?) between kernel 4.6 and 4.7

the Python code reproducing the failure is

        many = sorted("user.test{}".format(i) for i in range(100))
        for thing in many:
            setxattr(fn, thing, b"x", **kwargs)
        self.assertEqual(set(listxattr(fn)), set(init_xattr) | set(many))


Switching to kernel and asking our XFS maintainer for his view.

Comment 4 Dan Horák 2016-10-17 09:28:05 UTC
(In reply to Dan Horák from comment #3)
> few more results
> s390x xfs
>            fails  with kernel 4.8.1-1.fc25.s390x
>            fails  with kernel 4.8.0-0.rc7.git3.1.fc26.s390x (local rebuild
> on f26)
> 
> ppc64 xfs passes with kernel 4.5.5-300.fc24.ppc64
>           fails  with kernel 4.7.4-200.fc24.ppc64
> 
> => (my conclusion) something broke in XFS extended attributes on big endians
> (only?) between kernel 4.6 and 4.7

got same failure with kernel 4.7.7-200.fc24.ppc64le -> shouldn't be endian related

Comment 5 Dan Horák 2016-10-17 10:54:12 UTC
Created attachment 1211306 [details]
standalone test case

run with "python3 test.py"

Comment 6 Dan Horák 2016-10-18 08:20:57 UTC
(In reply to Dan Horák from comment #3)
> 
> the Python code reproducing the failure is
> 
>         many = sorted("user.test{}".format(i) for i in range(100))
>         for thing in many:
>             setxattr(fn, thing, b"x", **kwargs)
>         self.assertEqual(set(listxattr(fn)), set(init_xattr) | set(many))

when the number in range() is lowered from 100 to 22, the test passes, starting at 23 it fails

Comment 7 Charalampos Stratakis 2016-10-18 09:00:21 UTC
Maybe it's worth reporting the issue at python's upstream issue tracker.

Comment 8 Dan Horák 2016-10-18 13:43:49 UTC
(In reply to Charalampos Stratakis from comment #7)
> Maybe it's worth reporting the issue at python's upstream issue tracker.

I believe it's a kernel issue, so likely not worth to bother Python upstream with it.

Comment 9 Dan Horák 2016-10-18 13:45:03 UTC
when run the test with value 23 in range() - see the "selinux" attribute there

[sharkcz@ibm-p8-generic-02-fedora-le tmp]$ python3 t1
removing foo
Traceback (most recent call last):
  File "t1", line 66, in <module>
    EATests.test_simple()
  File "t1", line 57, in test_simple
    os.listxattr)
  File "t1", line 53, in _check_xattrs
    self._check_xattrs_str(str, *args, **kwargs)
  File "t1", line 48, in _check_xattrs_str
    self.assertEqual(set(listxattr(fn)), set(init_xattr) | set(many))
  File "/usr/lib64/python3.5/unittest/case.py", line 858, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/usr/lib64/python3.5/unittest/case.py", line 1110, in assertSetEqual
    self.fail(self._formatMessage(msg, standardMsg))
  File "/usr/lib64/python3.5/unittest/case.py", line 703, in fail
    raise self.failureException(msg)
AssertionError: Items in the first set but not the second:
'ecurity.selinux'
Items in the second set but not the first:
'user.test11'
'user.test4'
'security.selinux'
'user.test13'
'user.test9'
'user.test12'
'user.test15'
'user.test2'
'user.test10'
'user.test1'
'user.test7'
'user.test18'
'user.test16'
'user.test5'
'user.test20'
'user.test3'
'user.test6'
'user.test8'
'user.test22'
'user.test17'
'user.test21'
'user.test19'
'user.test14'
'user.test0'

Comment 10 Eric Sandeen 2016-10-18 13:53:30 UTC
I think this was regressed with

2a6fba6 "xfs: only return -errno or success from attr ->put_listent"

in v4.7, and fixed with

791cc43 Make __xfs_xattr_put_listen preperly report errors.

which will hit 4.9.

Any chance you could retest with the latest rawhide kernel
(i.e. https://kojipkgs.fedoraproject.org/packages/kernel/4.9.0/0.rc1.git0.2.fc26/ ?)

We probably need to get that commit sent to -stable.

thanks,
-Eric

Comment 11 Dan Horák 2016-10-18 14:07:53 UTC
You are right, it's fixed :-)

[root@ibm-p8-generic-02-guest02 ~]# uname -a
Linux ibm-p8-generic-02-guest02 4.9.0-0.rc1.git0.2.fc26.ppc64le #1 SMP Tue Oct 18 08:51:33 UTC 2016 ppc64le ppc64le ppc64le GNU/Linux
[root@ibm-p8-generic-02-guest02 ~]# python3 test.py 
removing foo
[root@ibm-p8-generic-02-guest02 ~]#

Comment 12 Eric Sandeen 2016-10-18 14:17:46 UTC
Great, thank you for testing.  I'll see if we can get this to -stable.

-Eric

Comment 13 Josh Boyer 2016-10-18 14:53:39 UTC
(In reply to Eric Sandeen from comment #12)
> Great, thank you for testing.  I'll see if we can get this to -stable.
> 
> -Eric

I've pointed that commit out to the Fedora kernel team.  They'll bring it into the 4.8.y Fedora release kernels until it hits stable.

Comment 14 Fedora Update System 2016-10-22 03:54:21 UTC
kernel-4.8.3-300.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-c8a0c7eece

Comment 15 Fedora Update System 2016-10-22 12:50:39 UTC
kernel-4.8.3-300.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.