lkml.org 
[lkml]   [2010]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[08/59] ocfs2/dlm: fix a dead lock
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Wengang Wang <wen.gang.wang@oracle.com>

    commit 6d98c3ccb52f692f1a60339dde7c700686a5568b upstream.

    When we have to take both dlm->master_lock and lockres->spinlock,
    take them in order

    lockres->spinlock and then dlm->master_lock.

    The patch fixes a violation of the rule.
    We can simply move taking dlm->master_lock to where we have dropped res->spinlock
    since when we access res->state and free mle memory we don't need master_lock's
    protection.

    Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
    Signed-off-by: Joel Becker <joel.becker@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/ocfs2/dlm/dlmmaster.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    --- a/fs/ocfs2/dlm/dlmmaster.c
    +++ b/fs/ocfs2/dlm/dlmmaster.c
    @@ -3046,8 +3046,6 @@ int dlm_migrate_request_handler(struct o
    /* check for pre-existing lock */
    spin_lock(&dlm->spinlock);
    res = __dlm_lookup_lockres(dlm, name, namelen, hash);
    - spin_lock(&dlm->master_lock);
    -
    if (res) {
    spin_lock(&res->spinlock);
    if (res->state & DLM_LOCK_RES_RECOVERING) {
    @@ -3065,14 +3063,15 @@ int dlm_migrate_request_handler(struct o
    spin_unlock(&res->spinlock);
    }

    + spin_lock(&dlm->master_lock);
    /* ignore status. only nonzero status would BUG. */
    ret = dlm_add_migration_mle(dlm, res, mle, &oldmle,
    name, namelen,
    migrate->new_master,
    migrate->master);

    -unlock:
    spin_unlock(&dlm->master_lock);
    +unlock:
    spin_unlock(&dlm->spinlock);

    if (oldmle) {



    \
     
     \ /
      Last update: 2010-08-25 01:51    [W:0.021 / U:63.364 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site