From: Joseph Qi <joseph.qi@huawei.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [PATCH] ocfs2: oldmle should be put while -EEXIST returned, and the new mle should not be get once at that time.
Date: Wed, 14 Sep 2016 10:54:13 +0800 [thread overview]
Message-ID: <57D8BBD5.6000408@huawei.com> (raw)
In-Reply-To: <71604351584F6A4EBAE558C676F37CA4A3D35566@H3CMLB12-EX.srv.huawei-3com.com>
NAK. This has already been fixed by commit 32e493265b2b ("ocfs2/dlm:
do not insert a new mle when another process is already migrating").
Please submit patch based on the latest kernel.
Thanks,
Joseph
On 2016/9/14 10:30, Guozhonghua wrote:
>
> In the function dlm_migrate_lockres, while calling dlm_add_migration_mle, and the ret is --EEXIST.
> At this time, the oldmle should be put one time for it had been get once in dlm_find_mle.
> And the new mle should not get once for it had not been initialized before goto fail.
>
> Signed-off-by: Guozhonghua <guozhonghua@h3c.com>
>
> --- ocfs2.orig/dlm/dlmmaster.c 2016-09-13 15:18:13.602684325 +0800
> +++ ocfs2/dlm/dlmmaster.c 2016-09-14 10:15:10.496873879 +0800
> @@ -2573,8 +2573,6 @@ static int dlm_is_lockres_migrateable(st
> /*
> * DLM_MIGRATE_LOCKRES
> */
> -
> -
> static int dlm_migrate_lockres(struct dlm_ctxt *dlm,
> struct dlm_lock_resource *res, u8 target)
> {
> @@ -2621,20 +2619,26 @@ static int dlm_migrate_lockres(struct dl
> spin_lock(&dlm->master_lock);
> ret = dlm_add_migration_mle(dlm, res, mle, &oldmle, name,
> namelen, target, dlm->node_num);
> + if (ret == -EEXIST) {
> + if(oldmle)
> + __dlm_put_mle(oldmle);
> +
> + spin_unlock(&dlm->master_lock);
> + spin_unlock(&dlm->spinlock);
> + mlog(0, "another process is already migrating it\n");
> + goto fail;
> + }
> +
> /* get an extra reference on the mle.
> * otherwise the assert_master from the new
> * master will destroy this.
> */
> dlm_get_mle_inuse(mle);
> + mle_added = 1;
> +
> spin_unlock(&dlm->master_lock);
> spin_unlock(&dlm->spinlock);
>
> - if (ret == -EEXIST) {
> - mlog(0, "another process is already migrating it\n");
> - goto fail;
> - }
> - mle_added = 1;
> -
> /*
> * set the MIGRATING flag and flush asts
> * if we fail after this we need to re-dirty the lockres
>
> -------------------------------------------------------------------------------------------------------------------------------------
> ????????????????????????????????????????
> ????????????????????????????????????????
> ????????????????????????????????????????
> ???
> This e-mail and its attachments contain confidential information from H3C, which is
> intended only for the person or entity whose address is listed above. Any use of the
> information contained herein in any way (including, but not limited to, total or partial
> disclosure, reproduction, or dissemination) by persons other than the intended
> recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender
> by phone or email immediately and delete it!
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
next prev parent reply other threads:[~2016-09-14 2:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-14 2:30 [Ocfs2-devel] [PATCH] ocfs2: oldmle should be put while -EEXIST returned, and the new mle should not be get once at that time Guozhonghua
2016-09-14 2:54 ` Joseph Qi [this message]
2016-09-14 3:41 ` [Ocfs2-devel] 答复: " Guozhonghua
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57D8BBD5.6000408@huawei.com \
--to=joseph.qi@huawei.com \
--cc=ocfs2-devel@oss.oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox