xfstests, bad generic tests 009 and 308

Angelo Dureghello angelo.dureghello at nomovok.com
Sat Sep 26 19:40:24 CDT 2015


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 at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs

-- 
Best regards,
Angelo Dureghello

-------------- next part --------------
# 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() {



More information about the xfs mailing list