lkml.org 
[lkml]   [2007]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 04/12] lockdep: annotate journal_start()
    On Fri, 2007-07-13 at 02:05 -0700, Andrew Morton wrote:

    > Except lockdep doesn't know about journal_start(), which has ranking
    > requirements similar to a semaphore.

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    ---
    fs/jbd/transaction.c | 9 +++++++++
    include/linux/jbd.h | 5 +++++
    2 files changed, 14 insertions(+)
    Index: linux-2.6/fs/jbd/transaction.c
    ===================================================================
    --- linux-2.6.orig/fs/jbd/transaction.c
    +++ linux-2.6/fs/jbd/transaction.c
    @@ -233,6 +233,8 @@ out:
    return ret;
    }

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

    + lockdep_init_map(&handle->h_lockdep_map, "jbd_handle", &jbd_handle_key, 0);
    +
    return handle;
    }

    @@ -286,6 +290,9 @@ handle_t *journal_start(journal_t *journ
    current->journal_info = NULL;
    handle = ERR_PTR(err);
    }
    +
    + lock_acquire(&handle->h_lockdep_map, 0, 0, 0, 2, _THIS_IP_);
    +
    return handle;
    }

    @@ -1411,6 +1418,8 @@ int journal_stop(handle_t *handle)
    spin_unlock(&journal->j_state_lock);
    }

    + lock_release(&handle->h_lockdep_map, 1, _THIS_IP_);
    +
    jbd_free_handle(handle);
    return err;
    }
    Index: linux-2.6/include/linux/jbd.h
    ===================================================================
    --- linux-2.6.orig/include/linux/jbd.h
    +++ linux-2.6/include/linux/jbd.h
    @@ -30,6 +30,7 @@
    #include <linux/bit_spinlock.h>
    #include <linux/mutex.h>
    #include <linux/timer.h>
    +#include <linux/lockdep.h>

    #include <asm/semaphore.h>
    #endif
    @@ -396,6 +397,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
    };


    --

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-09-28 10:05    [from the cache]
    ©2003-2011 Jasper Spaans