lkml.org 
[lkml]   [2008]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/12] GFS2: Fix debugfs glock file iterator
    Date
    Due to an incorrect iterator, some glocks were being missed from the
    glock dumps obtained via debugfs. This patch fixes the problem and
    ensures that we don't miss any glocks in future.

    Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

    diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
    index 13391e5..4cbb695 100644
    --- a/fs/gfs2/glock.c
    +++ b/fs/gfs2/glock.c
    @@ -1816,15 +1816,17 @@ restart:
    if (gl) {
    gi->gl = hlist_entry(gl->gl_list.next,
    struct gfs2_glock, gl_list);
    - if (gi->gl)
    - gfs2_glock_hold(gi->gl);
    + } else {
    + gi->gl = hlist_entry(gl_hash_table[gi->hash].hb_list.first,
    + struct gfs2_glock, gl_list);
    }
    + if (gi->gl)
    + gfs2_glock_hold(gi->gl);
    read_unlock(gl_lock_addr(gi->hash));
    if (gl)
    gfs2_glock_put(gl);
    - if (gl && gi->gl == NULL)
    - gi->hash++;
    while (gi->gl == NULL) {
    + gi->hash++;
    if (gi->hash >= GFS2_GL_HASH_SIZE)
    return 1;
    read_lock(gl_lock_addr(gi->hash));
    @@ -1833,7 +1835,6 @@ restart:
    if (gi->gl)
    gfs2_glock_hold(gi->gl);
    read_unlock(gl_lock_addr(gi->hash));
    - gi->hash++;
    }

    if (gi->sdp != gi->gl->gl_sbd)
    --
    1.5.5.1


    \
     
     \ /
      Last update: 2008-09-26 14:57    [W:0.046 / U:30.452 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site