• xuejiufei's avatar
    ocfs2/dlm: clear migration_pending when migration target goes down · cc28d6d8
    xuejiufei authored
    We have found a BUG on res->migration_pending when migrating lock
    resources.  The situation is as follows.
    
    dlm_mark_lockres_migration
      res->migration_pending = 1;
      __dlm_lockres_reserve_ast
      dlm_lockres_release_ast returns with res->migration_pending remains
          because other threads reserve asts
      wait dlm_migration_can_proceed returns 1
      >>>>>>> o2hb found that target goes down and remove target
              from domain_map
      dlm_migration_can_proceed returns 1
      dlm_mark_lockres_migrating returns -ESHOTDOWN with
          res->migration_pending still remains.
    
    When reentering dlm_mark_lockres_migrating(), it will trigger the BUG_ON
    with res->migration_pending.  So clear migration_pending when target is
    down.
    Signed-off-by: default avatarJiufei Xue <xuejiufei@huawei.com>
    Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    cc28d6d8
dlmmaster.c 96 KB