Skip to content

Commit

Permalink
ocfs2/userdlm: Add tracing in userdlm
Browse files Browse the repository at this point in the history
Make use of the newly added BASTS masklog to trace ASTs and BASTs in userdlm.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
  • Loading branch information
Sunil Mushran authored and Joel Becker committed Feb 28, 2010
1 parent 9b91518 commit 6fcef3f
Showing 1 changed file with 25 additions and 19 deletions.
44 changes: 25 additions & 19 deletions fs/ocfs2/dlmfs/userdlm.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,9 @@ static void user_ast(struct ocfs2_dlm_lksb *lksb)
struct user_lock_res *lockres = user_lksb_to_lock_res(lksb);
int status;

mlog(0, "AST fired for lockres %.*s\n", lockres->l_namelen,
lockres->l_name);
mlog(ML_BASTS, "AST fired for lockres %.*s, level %d => %d\n",
lockres->l_namelen, lockres->l_name, lockres->l_level,
lockres->l_requested);

spin_lock(&lockres->l_lock);

Expand Down Expand Up @@ -214,8 +215,8 @@ static void user_bast(struct ocfs2_dlm_lksb *lksb, int level)
{
struct user_lock_res *lockres = user_lksb_to_lock_res(lksb);

mlog(0, "Blocking AST fired for lockres %.*s. Blocking level %d\n",
lockres->l_namelen, lockres->l_name, level);
mlog(ML_BASTS, "BAST fired for lockres %.*s, blocking %d, level %d\n",
lockres->l_namelen, lockres->l_name, level, lockres->l_level);

spin_lock(&lockres->l_lock);
lockres->l_flags |= USER_LOCK_BLOCKED;
Expand All @@ -232,8 +233,8 @@ static void user_unlock_ast(struct ocfs2_dlm_lksb *lksb, int status)
{
struct user_lock_res *lockres = user_lksb_to_lock_res(lksb);

mlog(0, "UNLOCK AST called on lock %.*s\n", lockres->l_namelen,
lockres->l_name);
mlog(ML_BASTS, "UNLOCK AST fired for lockres %.*s, flags 0x%x\n",
lockres->l_namelen, lockres->l_name, lockres->l_flags);

if (status)
mlog(ML_ERROR, "dlm returns status %d\n", status);
Expand Down Expand Up @@ -302,8 +303,7 @@ static void user_dlm_unblock_lock(struct work_struct *work)
struct ocfs2_cluster_connection *conn =
cluster_connection_from_user_lockres(lockres);

mlog(0, "processing lockres %.*s\n", lockres->l_namelen,
lockres->l_name);
mlog(0, "lockres %.*s\n", lockres->l_namelen, lockres->l_name);

spin_lock(&lockres->l_lock);

Expand All @@ -321,17 +321,23 @@ static void user_dlm_unblock_lock(struct work_struct *work)
* flag, and finally we might get another bast which re-queues
* us before our ast for the downconvert is called. */
if (!(lockres->l_flags & USER_LOCK_BLOCKED)) {
mlog(ML_BASTS, "lockres %.*s USER_LOCK_BLOCKED\n",
lockres->l_namelen, lockres->l_name);
spin_unlock(&lockres->l_lock);
goto drop_ref;
}

if (lockres->l_flags & USER_LOCK_IN_TEARDOWN) {
mlog(ML_BASTS, "lockres %.*s USER_LOCK_IN_TEARDOWN\n",
lockres->l_namelen, lockres->l_name);
spin_unlock(&lockres->l_lock);
goto drop_ref;
}

if (lockres->l_flags & USER_LOCK_BUSY) {
if (lockres->l_flags & USER_LOCK_IN_CANCEL) {
mlog(ML_BASTS, "lockres %.*s USER_LOCK_IN_CANCEL\n",
lockres->l_namelen, lockres->l_name);
spin_unlock(&lockres->l_lock);
goto drop_ref;
}
Expand All @@ -352,25 +358,27 @@ static void user_dlm_unblock_lock(struct work_struct *work)
if ((lockres->l_blocking == DLM_LOCK_EX)
&& (lockres->l_ex_holders || lockres->l_ro_holders)) {
spin_unlock(&lockres->l_lock);
mlog(0, "can't downconvert for ex: ro = %u, ex = %u\n",
lockres->l_ro_holders, lockres->l_ex_holders);
mlog(ML_BASTS, "lockres %.*s, EX/PR Holders %u,%u\n",
lockres->l_namelen, lockres->l_name,
lockres->l_ex_holders, lockres->l_ro_holders);
goto drop_ref;
}

if ((lockres->l_blocking == DLM_LOCK_PR)
&& lockres->l_ex_holders) {
spin_unlock(&lockres->l_lock);
mlog(0, "can't downconvert for pr: ex = %u\n",
lockres->l_ex_holders);
mlog(ML_BASTS, "lockres %.*s, EX Holders %u\n",
lockres->l_namelen, lockres->l_name,
lockres->l_ex_holders);
goto drop_ref;
}

/* yay, we can downconvert now. */
new_level = user_highest_compat_lock_level(lockres->l_blocking);
lockres->l_requested = new_level;
lockres->l_flags |= USER_LOCK_BUSY;
mlog(0, "Downconvert lock from %d to %d\n",
lockres->l_level, new_level);
mlog(ML_BASTS, "lockres %.*s, downconvert %d => %d\n",
lockres->l_namelen, lockres->l_name, lockres->l_level, new_level);
spin_unlock(&lockres->l_lock);

/* need lock downconvert request now... */
Expand Down Expand Up @@ -430,10 +438,8 @@ int user_dlm_cluster_lock(struct user_lock_res *lockres,
goto bail;
}

mlog(0, "lockres %.*s: asking for %s lock, passed flags = 0x%x\n",
lockres->l_namelen, lockres->l_name,
(level == DLM_LOCK_EX) ? "DLM_LOCK_EX" : "DLM_LOCK_PR",
lkm_flags);
mlog(ML_BASTS, "lockres %.*s, level %d, flags = 0x%x\n",
lockres->l_namelen, lockres->l_name, level, lkm_flags);

again:
if (signal_pending(current)) {
Expand Down Expand Up @@ -603,7 +609,7 @@ int user_dlm_destroy_lock(struct user_lock_res *lockres)
struct ocfs2_cluster_connection *conn =
cluster_connection_from_user_lockres(lockres);

mlog(0, "asked to destroy %.*s\n", lockres->l_namelen, lockres->l_name);
mlog(ML_BASTS, "lockres %.*s\n", lockres->l_namelen, lockres->l_name);

spin_lock(&lockres->l_lock);
if (lockres->l_flags & USER_LOCK_IN_TEARDOWN) {
Expand Down

0 comments on commit 6fcef3f

Please sign in to comment.