Re: xfstests, bad generic tests 009 and 308

Angelo Dureghello
2015-09-27T00:40:38Z

[-- Attachment #1: Type: text/plain, Size: 2414 bytes --]

Hi Dave and all,

The 99% cpu loop on tests/generic/308 (on "rm") happens also on
i686 (32bit), kernel 4.2.0 (gcc 4.9.1)

So, we can exclude it is a cross-compilation issue, or an ARM specific
issue.
It should just be a 32-bit rch wide related issue.

I hardly found out the reason, at my opinion it doesn't have to be
fixed in xfs. I proposed this patch.

http://marc.info/?l=linux-kernel&m=144330858305518&w=2

Let's see if the list reply.

Couldn't proceed still on the other "all hole" errors, will look into
that. As far as i know, tests as 009 seems to give same errors to
non arm users too.

Will investigate further.

Best regards,
Angelo Dureghello

On 24/09/2015 10:20, Yann Dupont - Veille Techno wrote:
> Le 24/09/2015 00:04, Dave Chinner a écrit :
>> On Wed, Sep 23, 2015 at 12:43:21PM +0200, Yann Dupont - Veille Techno
>> wrote:
>>> Le 22/09/2015 00:52, Dave Chinner a écrit :
>>>> As it is, I highly recommend that you try a current 4.3 kernel, as
>>>> there are several code fixes in the XFS kernel code that work
>>>> around compiler issues we know about. AFAIA, the do_div() asm bug
>>>> that trips recent gcc optimisations isn't in the upstream kernel
>>>> yet, but that can be worked around by setting
>>>> CONFIG_CC_OPTIMIZE_FOR_SIZE=y in your build.
>>> Hi dave,
>>>
>>> I can confirm that CONFIG_CC_OPTIMIZE_FOR_SIZE=y is (was ?) the only
>>> way for me to have reliable XFS kernel code on different arm
>>> platforms (Marvell kirkwood, Allwinner A20, Amlogic S805), no matter
>>> what recent gcc version I've been using.
>>>
>>> I must admit I was cross-compiling from X86-64 too, but I think (not
>>> sure) that it was also the case with native gcc.
>>>
>>> I must also admit that I didn't tried since some months, because
>>> CONFIG_CC_OPTIMIZE_FOR_SIZE=y was the silver bullet for arm xfs
>>> kernel crashes. This crash was difficult to understand because it
>>> occurs quite randomly (I.e it can take several hours to trigger)
>>>
>>> If there's a patch floating around for gcc (or kernel), I'm
>>> interested to test.
>> See this subthread from august:
>>
>> http://oss.sgi.com/archives/xfs/2015-08/msg00234.html
>
> Oh, missed this thread.
>
> Thanks a lot for the pointer, will try this patch !
> Cheers,
>
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs

--
Best regards,
Angelo Dureghello

[-- Attachment #2: ftrace_rm_308.txt --]
[-- Type: text/plain, Size: 15971 bytes --]

# cat /sys/kernel/debug/tracing/trace | head -1000
# tracer: function_graph
#
# CPU DURATION FUNCTION CALLS
# | | | | | | |
1) 0.814 us | xfs_file_open();
0) | xfs_xattr_get() {
0) 0.650 us | xfs_attr_get();
0) 5.856 us | }
0) | xfs_file_read_iter() {
0) 1.301 us | xfs_ilock();
0) 1.139 us | xfs_iunlock();
0) + 19.032 us | }
0) | xfs_file_read_iter() {
0) 0.814 us | xfs_ilock();
0) 0.813 us | xfs_iunlock();
0) + 15.942 us | }
0) | xfs_file_read_iter() {
0) 0.488 us | xfs_ilock();
0) 0.813 us | xfs_iunlock();
0) + 12.363 us | }
0) | xfs_vn_follow_link() {
0) | xfs_readlink() {
0) 0.814 us | xfs_ilock();
0) 0.651 us | xfs_iunlock();
0) 9.109 us | }
0) + 14.315 us | }
0) 0.488 us | xfs_file_open();
0) | xfs_file_read_iter() {
0) 0.813 us | xfs_ilock();
0) 0.814 us | xfs_iunlock();
0) + 13.501 us | }
0) | xfs_file_read_iter() {
0) 0.651 us | xfs_ilock();
0) 0.651 us | xfs_iunlock();
0) + 12.200 us | }
0) 0.976 us | xfs_file_mmap();
0) 0.651 us | xfs_file_mmap();
0) | xfs_filemap_fault() {
0) 0.813 us | xfs_ilock();
0) 0.813 us | xfs_iunlock();
0) + 11.550 us | }
0) 0.813 us | xfs_file_mmap();
0) 0.813 us | xfs_file_mmap();
0) | xfs_filemap_fault() {
0) 0.813 us | xfs_ilock();
0) 0.651 us | xfs_iunlock();
0) + 10.410 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.650 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.976 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.488 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.326 us | xfs_bmbt_get_startoff();
0) 0.650 us | xfs_bmbt_get_blockcount();
0) + 76.291 us | }
0) 0.488 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.488 us | __xfs_bmbt_get_all();
0) 4.067 us | }
0) + 92.070 us | }
0) + 95.648 us | }
0) ! 104.270 us | }
0) 0.650 us | xfs_iunlock();
0) ! 117.608 us | }
0) ! 128.832 us | }
0) ! 132.899 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.651 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.976 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.325 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.325 us | xfs_bmbt_get_startoff();
0) 0.326 us | xfs_bmbt_get_blockcount();
0) 7.808 us | }
0) 0.488 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.488 us | __xfs_bmbt_get_all();
0) 4.067 us | }
0) + 22.286 us | }
0) + 26.027 us | }
0) + 33.347 us | }
0) 0.651 us | xfs_iunlock();
0) + 49.613 us | }
0) + 60.186 us | }
0) + 64.090 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.651 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.650 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.326 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.325 us | xfs_bmbt_get_startoff();
0) 0.326 us | xfs_bmbt_get_blockcount();
0) 7.645 us | }
0) 0.325 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.325 us | __xfs_bmbt_get_all();
0) 4.067 us | }
0) + 21.960 us | }
0) + 25.376 us | }
0) + 32.696 us | }
0) 0.650 us | xfs_iunlock();
0) + 44.245 us | }
0) + 54.005 us | }
0) + 57.747 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.488 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.813 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.325 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.326 us | xfs_bmbt_get_startoff();
0) 0.325 us | xfs_bmbt_get_blockcount();
0) 7.645 us | }
0) 0.488 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.326 us | __xfs_bmbt_get_all();
0) 4.229 us | }
0) + 22.285 us | }
0) + 25.701 us | }
0) + 32.696 us | }
0) 0.651 us | xfs_iunlock();
0) + 44.733 us | }
0) + 54.330 us | }
0) + 57.909 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.651 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.650 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.162 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.325 us | xfs_bmbt_get_startoff();
0) 0.325 us | xfs_bmbt_get_blockcount();
0) 9.110 us | }
0) 0.326 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.325 us | __xfs_bmbt_get_all();
0) 4.067 us | }
0) + 23.750 us | }
0) + 27.328 us | }
0) + 34.648 us | }
0) 0.651 us | xfs_iunlock();
0) + 46.522 us | }
0) + 56.283 us | }
0) + 59.861 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.488 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.814 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.325 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.326 us | xfs_bmbt_get_startoff();
0) 0.488 us | xfs_bmbt_get_blockcount();
0) 7.808 us | }
0) 0.325 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.488 us | __xfs_bmbt_get_all();
0) 3.904 us | }
0) + 21.960 us | }
0) + 25.376 us | }
0) + 32.696 us | }
0) 0.651 us | xfs_iunlock();
0) + 44.896 us | }
0) + 54.656 us | }
0) + 58.072 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.488 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.651 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.325 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.163 us | xfs_bmbt_get_startoff();
0) 0.325 us | xfs_bmbt_get_blockcount();
0) 7.808 us | }
0) 0.325 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.325 us | __xfs_bmbt_get_all();
0) 3.742 us | }
0) + 21.960 us | }
0) + 25.539 us | }
0) + 32.696 us | }
0) 0.651 us | xfs_iunlock();
0) + 44.733 us | }
0) + 54.493 us | }
0) + 57.909 us | }
0) 0.814 us | xfs_file_open();
0) 0.976 us | xfs_vn_getattr();
0) 1.139 us | xfs_file_mmap();
0) | xfs_vn_follow_link() {
0) | xfs_readlink() {
0) 0.651 us | xfs_ilock();
0) 0.650 us | xfs_iunlock();
0) 9.435 us | }
0) + 14.477 us | }
0) 0.651 us | xfs_file_open();
0) | xfs_file_read_iter() {
0) 0.814 us | xfs_ilock();
0) 0.813 us | xfs_iunlock();
0) + 17.731 us | }
0) 1.138 us | xfs_file_llseek();
0) | xfs_file_read_iter() {
0) 0.650 us | xfs_ilock();
0) 0.814 us | xfs_iunlock();
0) + 18.707 us | }
0) 0.488 us | xfs_file_llseek();
0) | xfs_file_read_iter() {
0) 0.651 us | xfs_ilock();
0) 0.650 us | xfs_iunlock();
0) + 12.200 us | }
0) 0.651 us | xfs_vn_getattr();
0) 0.651 us | xfs_file_mmap();
0) 0.976 us | xfs_file_mmap();
0) | xfs_filemap_fault() {
0) 0.813 us | xfs_ilock();
0) 0.650 us | xfs_iunlock();
0) + 10.736 us | }
0) | xfs_file_release() {
0) | xfs_release() {
0) 0.488 us | xfs_can_free_eofblocks();
0) | xfs_free_eofblocks() {
0) 0.813 us | xfs_ilock();
0) | xfs_bmapi_read() {
0) 0.326 us | xfs_isilocked();
0) | xfs_bmap_search_extents() {
0) | xfs_bmap_search_multi_extents() {
0) | xfs_iext_bno_to_ext() {
0) 0.326 us | xfs_bmbt_get_startoff();
0) 0.325 us | xfs_bmbt_get_blockcount();
0) 8.133 us | }
0) 0.325 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.326 us | __xfs_bmbt_get_all();
0) 3.904 us | }
0) + 22.285 us | }
0) + 25.864 us | }
0) + 33.672 us | }
0) 0.650 us | xfs_iunlock();
0) + 46.523 us | }
0) + 57.421 us | }
0) + 61.488 us | }
0) 1.138 us | xfs_vn_getattr();
0) | xfs_vn_unlink() {
0) | xfs_remove() {
0) | xfs_trans_alloc() {
0) 1.464 us | _xfs_trans_alloc();
0) 6.669 us | }
0) | xfs_trans_reserve() {
0) 1.464 us | xfs_mod_fdblocks();
0) | xfs_log_reserve() {
0) 0.650 us | xfs_log_calc_unit_res();
0) + 13.501 us | }
0) + 23.262 us | }
0) 0.976 us | xfs_ilock();
0) | xfs_lock_two_inodes() {
0) 0.651 us | xfs_ilock();
0) 0.976 us | xfs_ilock_nowait();
0) 9.110 us | }
0) 0.326 us | xfs_isilocked();
0) 1.464 us | xfs_trans_add_item();
0) 0.488 us | xfs_isilocked();
0) 1.301 us | xfs_trans_add_item();
0) 0.488 us | xfs_isilocked();
0) 0.163 us | xfs_isilocked();
0) | xfs_droplink() {
0) 0.325 us | xfs_isilocked();
0) 0.326 us | xfs_isilocked();
0) | xfs_iunlink() {
0) | xfs_read_agi() {
0) | xfs_buf_read_map() {
0) | xfs_buf_get_map() {
0) | _xfs_buf_find() {
0) 1.301 us | xfs_perag_get();
0) 0.651 us | xfs_perag_put();
0) 1.302 us | xfs_buf_trylock();
0) + 16.754 us | }
0) + 20.984 us | }
0) + 25.051 us | }
0) 1.301 us | xfs_trans_add_item();
0) + 34.974 us | }
0) + 40.992 us | }
0) + 54.656 us | }
0) | xfs_dir_removename() {
0) | xfs_default_hashname() {
0) 0.325 us | xfs_da_hashname();
0) 4.392 us | }
0) | xfs_dir2_sf_removename() {
0) 0.651 us | xfs_da_compname();
0) | xfs_dir2_sfe_get_ino() {
0) 0.326 us | xfs_dir2_sf_get_ino.isra.8();
0) 4.066 us | }
0) 0.488 us | xfs_dir2_sf_entsize();
0) 0.651 us | xfs_idata_realloc();
0) | xfs_dir2_sf_check.isra.6() {
0) | xfs_dir2_sf_get_parent_ino() {
0) 0.325 us | xfs_dir2_sf_get_ino.isra.8();
0) 3.904 us | }
0) 7.971 us | }
0) 0.326 us | xfs_isilocked();
0) + 36.600 us | }
0) + 53.030 us | }
0) 0.488 us | xfs_bmap_finish();
0) | xfs_trans_commit() {
0) 0.326 us | xfs_isilocked();
0) | xfs_iextents_copy() {
0) 0.488 us | xfs_isilocked();
0) 0.488 us | xfs_bmap_trace_exlist();
0) 0.325 us | xfs_iext_get_ext();
0) 0.488 us | xfs_bmbt_get_startblock();
0) | xfs_validate_extents() {
0) 0.326 us | xfs_iext_get_ext();
0) | xfs_bmbt_get_all() {
0) 0.325 us | __xfs_bmbt_get_all();
0) 3.904 us | }
0) + 11.224 us | }
0) + 30.744 us | }
0) 0.163 us | xfs_isilocked();
0) 0.488 us | xfs_next_bit();
0) 0.326 us | xfs_next_bit();
0) 0.325 us | xfs_next_bit();
0) 0.325 us | xfs_next_bit();
0) 0.488 us | xfs_buf_offset();
0) | xfs_log_done() {
0) 0.488 us | xfs_log_space_wake();
0) 1.302 us | xfs_log_ticket_put();
0) + 12.525 us | }
0) | xfs_trans_unreserve_and_mod_sb() {
0) 1.138 us | xfs_mod_fdblocks();
0) 5.043 us | }
0) | xfs_trans_free_items() {
0) 0.488 us | xfs_isilocked();
0) 1.302 us | xfs_iunlock();
0) 1.302 us | xfs_trans_free_item_desc();
0) 0.488 us | xfs_isilocked();
0) 0.651 us | xfs_iunlock();
0) 1.301 us | xfs_trans_free_item_desc();
0) 1.301 us | xfs_buf_unlock();
0) 0.814 us | xfs_buf_rele();
0) 0.976 us | xfs_trans_free_item_desc();
0) ! 135.176 us | }
0) | xfs_trans_free() {
0) 0.325 us | xfs_extent_busy_clear();
0) 5.694 us | }
0) ! 247.090 us | }
0) ! 452.702 us | }
0) ! 457.256 us | }
0) 0.488 us | xfs_fs_drop_inode();
0) | xfs_fs_evict_inode() {

[-- Attachment #3: Type: text/plain, Size: 121 bytes --]