• Vitaly Fertman's avatar
    staging: lustre: ldlm: disconnect speedup · 0cd491a9
    Vitaly Fertman authored
    disconnect takes too long time if there are many locks to cancel.
    besides the amount of time spent on each lock cancel, there is a
    resched() in cfs_hash_for_each_relax(), i.e. disconnect or eviction
    may take unexpectedly long time. While this patch only contains
    the client side fixes the original fix covered changes to both
    the server and client code to ensure proper disconnect handling.
    Below details the change done on both the server and client so
    people can examine the disconnect behavior with both source bases.
    
    - do not cancel locks on disconnect_export;
    - export will be left in obd_unlinked_exports list pinned by live
      locks;
    - new re-connects will created other non-conflicting exports;
    - new locks will cancel obsolete locks on conflicts;
    - once all the locks on the disconnected export will be cancelled,
      the export will be destroyed on the last ref put;
    - do not cancel in small portions, cancel all together in just 1
      dedicated thread - use server side blocking thread for that;
    - cancel blocked locks first so that waiting locks could proceed;
    - take care about blocked waiting locks, so that they would get
      cancelled quickly too;
    - do not remove lock from waiting list on AST error before moving
      it to elt_expired_locks list, because it removes it from export
      list too; otherwise this blocked lock will not be cancelled
      immediately on failed export;
    - cancel lock instead of just destroy for failed export, to make
      full cleanup, i.e. remove it from export list.
    Signed-off-by: default avatarVitaly Fertman <vitaly_fertman@xyratex.com>
    Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3031
    Xyratex-bug-id: MRP-395 MRP-1366 MRP-1366
    Reviewed-by: default avatarAndriy Skulysh <Andriy_Skulysh@xyratex.com>
    Reviewed-by: default avatarAlexey Lyashkov <Alexey_Lyashkov@xyratex.com>
    Reviewed-on: http://review.whamcloud.com/5843Reviewed-by: default avatarJames Simmons <uja.ornl@yahoo.com>
    Reviewed-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
    Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
    Signed-off-by: default avatarJames Simmons <jsimmons@infradead.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    0cd491a9
lustre_dlm.h 39.3 KB