• Srinivas Eeda's avatar
    ocfs2 fix o2dlm dlm run purgelist (rev 3) · 7beaf243
    Srinivas Eeda authored
    This patch fixes two problems in dlm_run_purgelist
    
    1. If a lockres is found to be in use, dlm_run_purgelist keeps trying to purge
    the same lockres instead of trying the next lockres.
    
    2. When a lockres is found unused, dlm_run_purgelist releases lockres spinlock
    before setting DLM_LOCK_RES_DROPPING_REF and calls dlm_purge_lockres.
    spinlock is reacquired but in this window lockres can get reused. This leads
    to BUG.
    
    This patch modifies dlm_run_purgelist to skip lockres if it's in use and purge
     next lockres. It also sets DLM_LOCK_RES_DROPPING_REF before releasing the
    lockres spinlock protecting it from getting reused.
    Signed-off-by: default avatarSrinivas Eeda <srinivas.eeda@oracle.com>
    Acked-by: default avatarSunil Mushran <sunil.mushran@oracle.com>
    Cc: stable@kernel.org
    Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
    7beaf243
dlmthread.c 20.4 KB