Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • L lustre-release
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • debian-packagesdebian-packages
  • lustre-release
  • Repository
Switch branch/tag
  • lustre-release
  • lustre
  • ldlm
  • ldlm_lock.c
Find file BlameHistoryPermalink
  • Alexander Boyko's avatar
    LU-10945 ldlm: fix l_last_activity usage · e09d273c
    Alexander Boyko authored Apr 24, 2018
    When race happen between ldlm_server_blocking_ast() and
    ldlm_request_cancel(), the at_measured() is called with wrong
    value equal to current time. And even worse, ldlm_bl_timeout() can
    return current_time*1.5.
    Before a time functions was fixed by LU-9019(e920be68
    
    ) for 64bit,
    this race leads to ETIMEDOUT at ptlrpc_import_delay_req() and
    client eviction during bl ast sending. The wrong type conversion
    take a place at pltrpc_send_limit_expired() at cfs_time_seconds().
    
    We should not take cancels into accoount if the BLAST is not send,
    just because the last_activity is not properly initialised - it
    destroys the AT completely.
    The patch devides l_last_activity to the client l_activity and
    server l_blast_sent for better understanding. The l_blast_sent is
    used for blocking ast only to measure time between BLAST and
    cancel request.
    
    For example:
     server cancels blocked lock after 1518731697s
     waiting_locks_callback()) ### lock callback timer expired after 0s:
     evicting client
    
    Signed-off-by: default avatarAlexander Boyko <c17825@cray.com>
    Change-Id: I44962d2b3675b77e09182bbe062bdd78d6cb0af5
    Cray-bug-id: LUS-5736
    Reviewed-on: https://review.whamcloud.com/32133
    
    
    Tested-by: Jenkins
    Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
    Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
    Reviewed-by: default avatarVitaly Fertman <c17818@cray.com>
    Reviewed-by: default avatarJames Simmons <uja.ornl@yahoo.com>
    Reviewed-by: default avatarMike Pershin <mike.pershin@intel.com>
    Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
    e09d273c

https://git.gsi.de is provided by CIT→Linux&Web | GSI Helmholtzzentrum fuer Schwerionenforschung GmbH | Imprint (in German) | Privacy policy