diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-11-20 10:37:45 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-11-30 10:36:30 -0500 |
commit | 1a14d3a68f04527546121eb7b45187ff6af63151 (patch) | |
tree | 7bc48436f7c6aad5433398311b67a10661e2633d /fs/gfs2/glops.c | |
parent | fa2ecfc5e11b12f25b67f9c84ac6b0e74a6a0115 (diff) |
[GFS2] Simplify glops functions
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>
Diffstat (limited to 'fs/gfs2/glops.c')
-rw-r--r-- | fs/gfs2/glops.c | 42 |
1 files changed, 11 insertions, 31 deletions
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index b92de0af0bf3..60561ca070c2 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c | |||
@@ -173,23 +173,18 @@ static void gfs2_page_writeback(struct gfs2_glock *gl) | |||
173 | /** | 173 | /** |
174 | * meta_go_sync - sync out the metadata for this glock | 174 | * meta_go_sync - sync out the metadata for this glock |
175 | * @gl: the glock | 175 | * @gl: the glock |
176 | * @flags: DIO_* | ||
177 | * | 176 | * |
178 | * Called when demoting or unlocking an EX glock. We must flush | 177 | * Called when demoting or unlocking an EX glock. We must flush |
179 | * to disk all dirty buffers/pages relating to this glock, and must not | 178 | * to disk all dirty buffers/pages relating to this glock, and must not |
180 | * not return to caller to demote/unlock the glock until I/O is complete. | 179 | * not return to caller to demote/unlock the glock until I/O is complete. |
181 | */ | 180 | */ |
182 | 181 | ||
183 | static void meta_go_sync(struct gfs2_glock *gl, int flags) | 182 | static void meta_go_sync(struct gfs2_glock *gl) |
184 | { | 183 | { |
185 | if (!(flags & DIO_METADATA)) | ||
186 | return; | ||
187 | |||
188 | if (test_and_clear_bit(GLF_DIRTY, &gl->gl_flags)) { | 184 | if (test_and_clear_bit(GLF_DIRTY, &gl->gl_flags)) { |
189 | gfs2_log_flush(gl->gl_sbd, gl); | 185 | gfs2_log_flush(gl->gl_sbd, gl); |
190 | gfs2_meta_sync(gl); | 186 | gfs2_meta_sync(gl); |
191 | if (flags & DIO_RELEASE) | 187 | gfs2_ail_empty_gl(gl); |
192 | gfs2_ail_empty_gl(gl); | ||
193 | } | 188 | } |
194 | 189 | ||
195 | } | 190 | } |
@@ -264,31 +259,18 @@ static void inode_go_drop_th(struct gfs2_glock *gl) | |||
264 | /** | 259 | /** |
265 | * inode_go_sync - Sync the dirty data and/or metadata for an inode glock | 260 | * inode_go_sync - Sync the dirty data and/or metadata for an inode glock |
266 | * @gl: the glock protecting the inode | 261 | * @gl: the glock protecting the inode |
267 | * @flags: | ||
268 | * | 262 | * |
269 | */ | 263 | */ |
270 | 264 | ||
271 | static void inode_go_sync(struct gfs2_glock *gl, int flags) | 265 | static void inode_go_sync(struct gfs2_glock *gl) |
272 | { | 266 | { |
273 | int meta = (flags & DIO_METADATA); | ||
274 | int data = (flags & DIO_DATA); | ||
275 | |||
276 | if (test_bit(GLF_DIRTY, &gl->gl_flags)) { | 267 | if (test_bit(GLF_DIRTY, &gl->gl_flags)) { |
277 | if (meta && data) { | 268 | gfs2_page_writeback(gl); |
278 | gfs2_page_writeback(gl); | 269 | gfs2_log_flush(gl->gl_sbd, gl); |
279 | gfs2_log_flush(gl->gl_sbd, gl); | 270 | gfs2_meta_sync(gl); |
280 | gfs2_meta_sync(gl); | 271 | gfs2_page_wait(gl); |
281 | gfs2_page_wait(gl); | 272 | clear_bit(GLF_DIRTY, &gl->gl_flags); |
282 | clear_bit(GLF_DIRTY, &gl->gl_flags); | 273 | gfs2_ail_empty_gl(gl); |
283 | } else if (meta) { | ||
284 | gfs2_log_flush(gl->gl_sbd, gl); | ||
285 | gfs2_meta_sync(gl); | ||
286 | } else if (data) { | ||
287 | gfs2_page_writeback(gl); | ||
288 | gfs2_page_wait(gl); | ||
289 | } | ||
290 | if (flags & DIO_RELEASE) | ||
291 | gfs2_ail_empty_gl(gl); | ||
292 | } | 274 | } |
293 | } | 275 | } |
294 | 276 | ||
@@ -302,15 +284,13 @@ static void inode_go_sync(struct gfs2_glock *gl, int flags) | |||
302 | static void inode_go_inval(struct gfs2_glock *gl, int flags) | 284 | static void inode_go_inval(struct gfs2_glock *gl, int flags) |
303 | { | 285 | { |
304 | int meta = (flags & DIO_METADATA); | 286 | int meta = (flags & DIO_METADATA); |
305 | int data = (flags & DIO_DATA); | ||
306 | 287 | ||
307 | if (meta) { | 288 | if (meta) { |
308 | struct gfs2_inode *ip = gl->gl_object; | 289 | struct gfs2_inode *ip = gl->gl_object; |
309 | gfs2_meta_inval(gl); | 290 | gfs2_meta_inval(gl); |
310 | set_bit(GIF_INVALID, &ip->i_flags); | 291 | set_bit(GIF_INVALID, &ip->i_flags); |
311 | } | 292 | } |
312 | if (data) | 293 | gfs2_page_inval(gl); |
313 | gfs2_page_inval(gl); | ||
314 | } | 294 | } |
315 | 295 | ||
316 | /** | 296 | /** |
@@ -494,7 +474,7 @@ static void trans_go_xmote_bh(struct gfs2_glock *gl) | |||
494 | if (gl->gl_state != LM_ST_UNLOCKED && | 474 | if (gl->gl_state != LM_ST_UNLOCKED && |
495 | test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) { | 475 | test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) { |
496 | gfs2_meta_cache_flush(GFS2_I(sdp->sd_jdesc->jd_inode)); | 476 | gfs2_meta_cache_flush(GFS2_I(sdp->sd_jdesc->jd_inode)); |
497 | j_gl->gl_ops->go_inval(j_gl, DIO_METADATA | DIO_DATA); | 477 | j_gl->gl_ops->go_inval(j_gl, DIO_METADATA); |
498 | 478 | ||
499 | error = gfs2_find_jhead(sdp->sd_jdesc, &head); | 479 | error = gfs2_find_jhead(sdp->sd_jdesc, &head); |
500 | if (error) | 480 | if (error) |