Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a947e0335699a1d387c3826e5b8eff9e0afe505e
Commit:     a947e0335699a1d387c3826e5b8eff9e0afe505e
Parent:     61d96be0f474df354c2ff4a2b2bf410b23a5cd60
Author:     Abhijith Das <[EMAIL PROTECTED]>
AuthorDate: Tue Aug 21 09:57:29 2007 -0500
Committer:  Steven Whitehouse <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 08:55:41 2007 +0100

    [GFS2] Wendy's dump lockname in hex & fix glock dump
    
    With this patch, gfs2 glockdump through the debugfs filesystem will only
    dump glocks for the specified filesystem instead of all glocks. Also, to
    aid debugging, the glock number is dumped in hex instead of decimal.
    
    Signed-off-by: Steven Whitehouse <[EMAIL PROTECTED]>
    Signed-off-by: S. Wendy Cheng <[EMAIL PROTECTED]>
    Signed-off-by: Abhijith Das <[EMAIL PROTECTED]>
---
 fs/gfs2/glock.c |   26 +++++++++++++-------------
 1 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 559937c..3d94918 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -1844,7 +1844,7 @@ static int dump_glock(struct glock_iter *gi, struct 
gfs2_glock *gl)
 
        spin_lock(&gl->gl_spin);
 
-       print_dbg(gi, "Glock 0x%p (%u, %llu)\n", gl, gl->gl_name.ln_type,
+       print_dbg(gi, "Glock 0x%p (%u, 0x%llx)\n", gl, gl->gl_name.ln_type,
                   (unsigned long long)gl->gl_name.ln_number);
        print_dbg(gi, "  gl_flags =");
        for (x = 0; x < 32; x++) {
@@ -2024,20 +2024,21 @@ static int gfs2_glock_iter_next(struct glock_iter *gi)
 {
        struct gfs2_glock *gl;
 
+restart:
        read_lock(gl_lock_addr(gi->hash));
        gl = gi->gl;
        if (gl) {
-               gi->gl = hlist_entry(gl->gl_list.next, struct gfs2_glock,
-                                    gl_list);
+               gi->gl = hlist_entry(gl->gl_list.next,
+                                    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);
-
-       while(gi->gl == NULL) {
+       if (gl && gi->gl == NULL)
                gi->hash++;
+       while(gi->gl == NULL) {
                if (gi->hash >= GFS2_GL_HASH_SIZE)
                        return 1;
                read_lock(gl_lock_addr(gi->hash));
@@ -2046,7 +2047,12 @@ static int gfs2_glock_iter_next(struct glock_iter *gi)
                if (gi->gl)
                        gfs2_glock_hold(gi->gl);
                read_unlock(gl_lock_addr(gi->hash));
+               gi->hash++;
        }
+
+       if (gi->sdp != gi->gl->gl_sbd)
+               goto restart;
+
        return 0;
 }
 
@@ -2068,16 +2074,10 @@ static struct glock_iter *gfs2_glock_iter_init(struct 
gfs2_sbd *sdp)
        gi->sdp = sdp;
        gi->hash = 0;
        gi->seq = NULL;
+       gi->gl = NULL;
        memset(gi->string, 0, sizeof(gi->string));
 
-       read_lock(gl_lock_addr(gi->hash));
-       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 (!gi->gl && gfs2_glock_iter_next(gi)) {
+       if (gfs2_glock_iter_next(gi)) {
                gfs2_glock_iter_free(gi);
                return NULL;
        }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to