]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/gfs2/glops.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6-omap-h63xx.git] / fs / gfs2 / glops.c
index c663b7a0f410a3c9c2a6c2136a722be8cf429b09..07d84d16cda4365eac465f375d22497414d0c988 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
- * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
+ * Copyright (C) 2004-2008 Red Hat, Inc.  All rights reserved.
  *
  * This copyrighted material is made available to anyone wishing to use,
  * modify, copy, or redistribute it subject to the terms and conditions
@@ -126,7 +126,13 @@ static void meta_go_inval(struct gfs2_glock *gl, int flags)
                return;
 
        gfs2_meta_inval(gl);
-       gl->gl_vn++;
+       if (gl->gl_object == GFS2_I(gl->gl_sbd->sd_rindex))
+               gl->gl_sbd->sd_rindex_uptodate = 0;
+       else if (gl->gl_ops == &gfs2_rgrp_glops && gl->gl_object) {
+               struct gfs2_rgrpd *rgd = (struct gfs2_rgrpd *)gl->gl_object;
+
+               rgd->rd_flags &= ~GFS2_RDF_UPTODATE;
+       }
 }
 
 /**
@@ -243,7 +249,7 @@ static int inode_go_lock(struct gfs2_holder *gh)
        struct gfs2_inode *ip = gl->gl_object;
        int error = 0;
 
-       if (!ip)
+       if (!ip || (gh->gh_flags & GL_SKIP))
                return 0;
 
        if (test_bit(GIF_INVALID, &ip->i_flags)) {