lkml.org 
[lkml]   [2008]   [Jan]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 46/49] jbd2: add lockdep support
    Date
    From: Mingming Cao <cmm@us.ibm.com>

    Ported from similar patch for the jbd layer.

    Signed-off-by: Mingming Cao <cmm@us.ibm.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    ---
    fs/jbd2/transaction.c | 11 +++++++++++
    include/linux/jbd2.h | 4 ++++
    2 files changed, 15 insertions(+), 0 deletions(-)
    diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
    index f30802a..70b3199 100644
    --- a/fs/jbd2/transaction.c
    +++ b/fs/jbd2/transaction.c
    @@ -241,6 +241,8 @@ out:
    return ret;
    }

    +static struct lock_class_key jbd2_handle_key;
    +
    /* Allocate a new handle. This should probably be in a slab... */
    static handle_t *new_handle(int nblocks)
    {
    @@ -251,6 +253,9 @@ static handle_t *new_handle(int nblocks)
    handle->h_buffer_credits = nblocks;
    handle->h_ref = 1;

    + lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle",
    + &jbd2_handle_key, 0);
    +
    return handle;
    }

    @@ -293,7 +298,11 @@ handle_t *jbd2_journal_start(journal_t *journal, int nblocks)
    jbd2_free_handle(handle);
    current->journal_info = NULL;
    handle = ERR_PTR(err);
    + goto out;
    }
    +
    + lock_acquire(&handle->h_lockdep_map, 0, 0, 0, 2, _THIS_IP_);
    +out:
    return handle;
    }

    @@ -1419,6 +1428,8 @@ int jbd2_journal_stop(handle_t *handle)
    spin_unlock(&journal->j_state_lock);
    }

    + lock_release(&handle->h_lockdep_map, 1, _THIS_IP_);
    +
    jbd2_free_handle(handle);
    return err;
    }
    diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
    index a2645c2..f982d38 100644
    --- a/include/linux/jbd2.h
    +++ b/include/linux/jbd2.h
    @@ -418,6 +418,10 @@ struct handle_s
    unsigned int h_sync: 1; /* sync-on-close */
    unsigned int h_jdata: 1; /* force data journaling */
    unsigned int h_aborted: 1; /* fatal error on handle */
    +
    +#ifdef CONFIG_DEBUG_LOCK_ALLOC
    + struct lockdep_map h_lockdep_map;
    +#endif
    };


    --
    1.5.4.rc3.31.g1271-dirty


    \
     
     \ /
      Last update: 2008-01-22 04:17    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean