[GFS2] Simplify glops functions
authorSteven Whitehouse <swhiteho@redhat.com>
Mon, 20 Nov 2006 15:37:45 +0000 (10:37 -0500)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 30 Nov 2006 15:36:30 +0000 (10:36 -0500)
The go_sync callback took two flags, but one of them was set on every
call, so this patch removes once of the flags and makes the previously
conditional operations (on this flag), unconditional.

The go_inval callback took three flags, each of which was set on every
call to it. This patch removes the flags and makes the operations
unconditional, which makes the logic rather more obvious.

Two now unused flags are also removed from incore.h.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/glock.c
fs/gfs2/glops.c
fs/gfs2/incore.h
fs/gfs2/super.c

index edc21c8d7faa6f85930ce92bc365cf8af52c842d..b8ba4d5c1d9e420f6cf0d4bc0fed1241f46366de 100644 (file)
@@ -847,12 +847,12 @@ static void xmote_bh(struct gfs2_glock *gl, unsigned int ret)
 
        if (prev_state != LM_ST_UNLOCKED && !(ret & LM_OUT_CACHEABLE)) {
                if (glops->go_inval)
-                       glops->go_inval(gl, DIO_METADATA | DIO_DATA);
+                       glops->go_inval(gl, DIO_METADATA);
        } else if (gl->gl_state == LM_ST_DEFERRED) {
                /* We might not want to do this here.
                   Look at moving to the inode glops. */
                if (glops->go_inval)
-                       glops->go_inval(gl, DIO_DATA);
+                       glops->go_inval(gl, 0);
        }
 
        /*  Deal with each possible exit condition  */
@@ -954,7 +954,7 @@ void gfs2_glock_xmote_th(struct gfs2_glock *gl, unsigned int state, int flags)
        gfs2_assert_warn(sdp, state != gl->gl_state);
 
        if (gl->gl_state == LM_ST_EXCLUSIVE && glops->go_sync)
-               glops->go_sync(gl, DIO_METADATA | DIO_DATA | DIO_RELEASE);
+               glops->go_sync(gl);
 
        gfs2_glock_hold(gl);
        gl->gl_req_bh = xmote_bh;
@@ -995,7 +995,7 @@ static void drop_bh(struct gfs2_glock *gl, unsigned int ret)
        state_change(gl, LM_ST_UNLOCKED);
 
        if (glops->go_inval)
-               glops->go_inval(gl, DIO_METADATA | DIO_DATA);
+               glops->go_inval(gl, DIO_METADATA);
 
        if (gh) {
                spin_lock(&gl->gl_spin);
@@ -1041,7 +1041,7 @@ void gfs2_glock_drop_th(struct gfs2_glock *gl)
        gfs2_assert_warn(sdp, gl->gl_state != LM_ST_UNLOCKED);
 
        if (gl->gl_state == LM_ST_EXCLUSIVE && glops->go_sync)
-               glops->go_sync(gl, DIO_METADATA | DIO_DATA | DIO_RELEASE);
+               glops->go_sync(gl);
 
        gfs2_glock_hold(gl);
        gl->gl_req_bh = drop_bh;
index b92de0af0bf30f66b66869a7c49c684d6a3c6c7e..60561ca070c20cf9e6d9ee6062330d3b20531da4 100644 (file)
@@ -173,23 +173,18 @@ static void gfs2_page_writeback(struct gfs2_glock *gl)
 /**
  * meta_go_sync - sync out the metadata for this glock
  * @gl: the glock
- * @flags: DIO_*
  *
  * Called when demoting or unlocking an EX glock.  We must flush
  * to disk all dirty buffers/pages relating to this glock, and must not
  * not return to caller to demote/unlock the glock until I/O is complete.
  */
 
-static void meta_go_sync(struct gfs2_glock *gl, int flags)
+static void meta_go_sync(struct gfs2_glock *gl)
 {
-       if (!(flags & DIO_METADATA))
-               return;
-
        if (test_and_clear_bit(GLF_DIRTY, &gl->gl_flags)) {
                gfs2_log_flush(gl->gl_sbd, gl);
                gfs2_meta_sync(gl);
-               if (flags & DIO_RELEASE)
-                       gfs2_ail_empty_gl(gl);
+               gfs2_ail_empty_gl(gl);
        }
 
 }
@@ -264,31 +259,18 @@ static void inode_go_drop_th(struct gfs2_glock *gl)
 /**
  * inode_go_sync - Sync the dirty data and/or metadata for an inode glock
  * @gl: the glock protecting the inode
- * @flags:
  *
  */
 
-static void inode_go_sync(struct gfs2_glock *gl, int flags)
+static void inode_go_sync(struct gfs2_glock *gl)
 {
-       int meta = (flags & DIO_METADATA);
-       int data = (flags & DIO_DATA);
-
        if (test_bit(GLF_DIRTY, &gl->gl_flags)) {
-               if (meta && data) {
-                       gfs2_page_writeback(gl);
-                       gfs2_log_flush(gl->gl_sbd, gl);
-                       gfs2_meta_sync(gl);
-                       gfs2_page_wait(gl);
-                       clear_bit(GLF_DIRTY, &gl->gl_flags);
-               } else if (meta) {
-                       gfs2_log_flush(gl->gl_sbd, gl);
-                       gfs2_meta_sync(gl);
-               } else if (data) {
-                       gfs2_page_writeback(gl);
-                       gfs2_page_wait(gl);
-               }
-               if (flags & DIO_RELEASE)
-                       gfs2_ail_empty_gl(gl);
+               gfs2_page_writeback(gl);
+               gfs2_log_flush(gl->gl_sbd, gl);
+               gfs2_meta_sync(gl);
+               gfs2_page_wait(gl);
+               clear_bit(GLF_DIRTY, &gl->gl_flags);
+               gfs2_ail_empty_gl(gl);
        }
 }
 
@@ -302,15 +284,13 @@ static void inode_go_sync(struct gfs2_glock *gl, int flags)
 static void inode_go_inval(struct gfs2_glock *gl, int flags)
 {
        int meta = (flags & DIO_METADATA);
-       int data = (flags & DIO_DATA);
 
        if (meta) {
                struct gfs2_inode *ip = gl->gl_object;
                gfs2_meta_inval(gl);
                set_bit(GIF_INVALID, &ip->i_flags);
        }
-       if (data)
-               gfs2_page_inval(gl);
+       gfs2_page_inval(gl);
 }
 
 /**
@@ -494,7 +474,7 @@ static void trans_go_xmote_bh(struct gfs2_glock *gl)
        if (gl->gl_state != LM_ST_UNLOCKED &&
            test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) {
                gfs2_meta_cache_flush(GFS2_I(sdp->sd_jdesc->jd_inode));
-               j_gl->gl_ops->go_inval(j_gl, DIO_METADATA | DIO_DATA);
+               j_gl->gl_ops->go_inval(j_gl, DIO_METADATA);
 
                error = gfs2_find_jhead(sdp->sd_jdesc, &head);
                if (error)
index 227a74dc5ec08cbdab1fe5590a91b79143ef91fb..734421edae85a21ac02bf00e6735228208965919 100644 (file)
@@ -14,8 +14,6 @@
 
 #define DIO_WAIT       0x00000010
 #define DIO_METADATA   0x00000020
-#define DIO_DATA       0x00000040
-#define DIO_RELEASE    0x00000080
 #define DIO_ALL                0x00000100
 
 struct gfs2_log_operations;
@@ -103,18 +101,17 @@ struct gfs2_bufdata {
 };
 
 struct gfs2_glock_operations {
-       void (*go_xmote_th) (struct gfs2_glock * gl, unsigned int state,
-                            int flags);
-       void (*go_xmote_bh) (struct gfs2_glock * gl);
-       void (*go_drop_th) (struct gfs2_glock * gl);
-       void (*go_drop_bh) (struct gfs2_glock * gl);
-       void (*go_sync) (struct gfs2_glock * gl, int flags);
-       void (*go_inval) (struct gfs2_glock * gl, int flags);
-       int (*go_demote_ok) (struct gfs2_glock * gl);
-       int (*go_lock) (struct gfs2_holder * gh);
-       void (*go_unlock) (struct gfs2_holder * gh);
-       void (*go_callback) (struct gfs2_glock * gl, unsigned int state);
-       void (*go_greedy) (struct gfs2_glock * gl);
+       void (*go_xmote_th) (struct gfs2_glock *gl, unsigned int state, int flags);
+       void (*go_xmote_bh) (struct gfs2_glock *gl);
+       void (*go_drop_th) (struct gfs2_glock *gl);
+       void (*go_drop_bh) (struct gfs2_glock *gl);
+       void (*go_sync) (struct gfs2_glock *gl);
+       void (*go_inval) (struct gfs2_glock *gl, int flags);
+       int (*go_demote_ok) (struct gfs2_glock *gl);
+       int (*go_lock) (struct gfs2_holder *gh);
+       void (*go_unlock) (struct gfs2_holder *gh);
+       void (*go_callback) (struct gfs2_glock *gl, unsigned int state);
+       void (*go_greedy) (struct gfs2_glock *gl);
        const int go_type;
 };
 
index 0ef8317270862f634e9bd288e16249572e7e3066..1408c5f3137906556129226336bda45088165614 100644 (file)
@@ -517,7 +517,7 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
                return error;
 
        gfs2_meta_cache_flush(ip);
-       j_gl->gl_ops->go_inval(j_gl, DIO_METADATA | DIO_DATA);
+       j_gl->gl_ops->go_inval(j_gl, DIO_METADATA);
 
        error = gfs2_find_jhead(sdp->sd_jdesc, &head);
        if (error)