Commit 121e7301 authored by Andreas Gruenbacher's avatar Andreas Gruenbacher

gfs2: Rename GLF_FREEING to GLF_UNLOCKED

Rename the GLF_FREEING flag to GLF_UNLOCKED, and the ->go_free glock
operation to ->go_unlocked.  This mechanism is used to wait for the
underlying DLM lock to be unlocked; being able to free the glock is a
consequence of the DLM lock being unlocked.
Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
parent 932a9052
...@@ -2378,7 +2378,7 @@ static const char *gflags2str(char *buf, const struct gfs2_glock *gl) ...@@ -2378,7 +2378,7 @@ static const char *gflags2str(char *buf, const struct gfs2_glock *gl)
*p++ = 'o'; *p++ = 'o';
if (test_bit(GLF_BLOCKING, gflags)) if (test_bit(GLF_BLOCKING, gflags))
*p++ = 'b'; *p++ = 'b';
if (test_bit(GLF_FREEING, gflags)) if (test_bit(GLF_UNLOCKED, gflags))
*p++ = 'x'; *p++ = 'x';
if (test_bit(GLF_INSTANTIATE_NEEDED, gflags)) if (test_bit(GLF_INSTANTIATE_NEEDED, gflags))
*p++ = 'n'; *p++ = 'n';
......
...@@ -648,21 +648,21 @@ static void iopen_go_callback(struct gfs2_glock *gl, bool remote) ...@@ -648,21 +648,21 @@ static void iopen_go_callback(struct gfs2_glock *gl, bool remote)
} }
/** /**
* inode_go_free - wake up anyone waiting for dlm's unlock ast to free it * inode_go_unlocked - wake up anyone waiting for dlm's unlock ast
* @gl: glock being freed * @gl: glock being unlocked
* *
* For now, this is only used for the journal inode glock. In withdraw * For now, this is only used for the journal inode glock. In withdraw
* situations, we need to wait for the glock to be freed so that we know * situations, we need to wait for the glock to be unlocked so that we know
* other nodes may proceed with recovery / journal replay. * other nodes may proceed with recovery / journal replay.
*/ */
static void inode_go_free(struct gfs2_glock *gl) static void inode_go_unlocked(struct gfs2_glock *gl)
{ {
/* Note that we cannot reference gl_object because it's already set /* Note that we cannot reference gl_object because it's already set
* to NULL by this point in its lifecycle. */ * to NULL by this point in its lifecycle. */
if (!test_bit(GLF_FREEING, &gl->gl_flags)) if (!test_bit(GLF_UNLOCKED, &gl->gl_flags))
return; return;
clear_bit_unlock(GLF_FREEING, &gl->gl_flags); clear_bit_unlock(GLF_UNLOCKED, &gl->gl_flags);
wake_up_bit(&gl->gl_flags, GLF_FREEING); wake_up_bit(&gl->gl_flags, GLF_UNLOCKED);
} }
/** /**
...@@ -728,7 +728,7 @@ const struct gfs2_glock_operations gfs2_inode_glops = { ...@@ -728,7 +728,7 @@ const struct gfs2_glock_operations gfs2_inode_glops = {
.go_dump = inode_go_dump, .go_dump = inode_go_dump,
.go_type = LM_TYPE_INODE, .go_type = LM_TYPE_INODE,
.go_flags = GLOF_ASPACE | GLOF_LRU | GLOF_LVB, .go_flags = GLOF_ASPACE | GLOF_LRU | GLOF_LVB,
.go_free = inode_go_free, .go_unlocked = inode_go_unlocked,
}; };
const struct gfs2_glock_operations gfs2_rgrp_glops = { const struct gfs2_glock_operations gfs2_rgrp_glops = {
......
...@@ -224,7 +224,7 @@ struct gfs2_glock_operations { ...@@ -224,7 +224,7 @@ struct gfs2_glock_operations {
void (*go_dump)(struct seq_file *seq, const struct gfs2_glock *gl, void (*go_dump)(struct seq_file *seq, const struct gfs2_glock *gl,
const char *fs_id_buf); const char *fs_id_buf);
void (*go_callback)(struct gfs2_glock *gl, bool remote); void (*go_callback)(struct gfs2_glock *gl, bool remote);
void (*go_free)(struct gfs2_glock *gl); void (*go_unlocked)(struct gfs2_glock *gl);
const int go_subclass; const int go_subclass;
const int go_type; const int go_type;
const unsigned long go_flags; const unsigned long go_flags;
...@@ -329,7 +329,7 @@ enum { ...@@ -329,7 +329,7 @@ enum {
GLF_LRU = 13, GLF_LRU = 13,
GLF_OBJECT = 14, /* Used only for tracing */ GLF_OBJECT = 14, /* Used only for tracing */
GLF_BLOCKING = 15, GLF_BLOCKING = 15,
GLF_FREEING = 16, /* Wait for glock to be freed */ GLF_UNLOCKED = 16, /* Wait for glock to be unlocked */
GLF_TRY_TO_EVICT = 17, /* iopen glocks only */ GLF_TRY_TO_EVICT = 17, /* iopen glocks only */
GLF_VERIFY_EVICT = 18, /* iopen glocks only */ GLF_VERIFY_EVICT = 18, /* iopen glocks only */
}; };
......
...@@ -134,8 +134,8 @@ static void gdlm_ast(void *arg) ...@@ -134,8 +134,8 @@ static void gdlm_ast(void *arg)
switch (gl->gl_lksb.sb_status) { switch (gl->gl_lksb.sb_status) {
case -DLM_EUNLOCK: /* Unlocked, so glock can be freed */ case -DLM_EUNLOCK: /* Unlocked, so glock can be freed */
if (gl->gl_ops->go_free) if (gl->gl_ops->go_unlocked)
gl->gl_ops->go_free(gl); gl->gl_ops->go_unlocked(gl);
gfs2_glock_free(gl); gfs2_glock_free(gl);
return; return;
case -DLM_ECANCEL: /* Cancel while getting lock */ case -DLM_ECANCEL: /* Cancel while getting lock */
......
...@@ -206,9 +206,9 @@ static void signal_our_withdraw(struct gfs2_sbd *sdp) ...@@ -206,9 +206,9 @@ static void signal_our_withdraw(struct gfs2_sbd *sdp)
* on other nodes to be successful, otherwise we remain the owner of * on other nodes to be successful, otherwise we remain the owner of
* the glock as far as dlm is concerned. * the glock as far as dlm is concerned.
*/ */
if (i_gl->gl_ops->go_free) { if (i_gl->gl_ops->go_unlocked) {
set_bit(GLF_FREEING, &i_gl->gl_flags); set_bit(GLF_UNLOCKED, &i_gl->gl_flags);
wait_on_bit(&i_gl->gl_flags, GLF_FREEING, TASK_UNINTERRUPTIBLE); wait_on_bit(&i_gl->gl_flags, GLF_UNLOCKED, TASK_UNINTERRUPTIBLE);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment