[Ocfs2-devel] [PATCH 4/4] ocfs2/dlm: Make dlm_assert_master_handler() kill itself instead of the asserter

Joel Becker Joel.Becker at oracle.com
Tue Feb 10 23:35:15 PST 2009


On Tue, Feb 03, 2009 at 12:37:16PM -0800, Sunil Mushran wrote:
> In dlm_assert_master_handler(), if we get an incorrect assert master from a node
> that, we reply with EINVAL asking the asserter to die. The problem is that an
> assert is sent after so many hoops, it is invariably the node that thinks the
> asserter is wrong, is actually wrong. So instead of killing the asserter, this
> patch kills the assertee.

	You mean that the node asserting mastery is probably correct,
and the node that sees a disconnect between mastery information and the
asserter is confused?

> This patch papers over a race that is still being addressed.
> 
> Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
> ---
>  fs/ocfs2/dlm/dlmmaster.c |   12 ++++++------
>  1 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
> index 54e182a..0a28139 100644
> --- a/fs/ocfs2/dlm/dlmmaster.c
> +++ b/fs/ocfs2/dlm/dlmmaster.c
> @@ -1849,12 +1849,12 @@ int dlm_assert_master_handler(struct o2net_msg *msg, u32 len, void *data,
>  		if (!mle) {
>  			if (res->owner != DLM_LOCK_RES_OWNER_UNKNOWN &&
>  			    res->owner != assert->node_idx) {
> -				mlog(ML_ERROR, "assert_master from "
> -					  "%u, but current owner is "
> -					  "%u! (%.*s)\n",
> -				       assert->node_idx, res->owner,
> -				       namelen, name);
> -				goto kill;
> +				mlog(ML_ERROR, "DIE! Mastery assert from %u, "
> +				     "but current owner is %u! (%.*s)\n",
> +				     assert->node_idx, res->owner, namelen,
> +				     name);
> +				__dlm_print_one_lock_resource(res);
> +				BUG();

	BUG() isn't much of a die.  Are you figuring soft lockup code
will eventually kill this?

Joel

-- 

"And yet I fight,
 And yet I fight this battle all alone.
 No one to cry to;
 No place to call home."

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127



More information about the Ocfs2-devel mailing list