[Ocfs2-devel] [PATCH] ocfs2: oldmle should be put while -EEXIST returned, and the new mle should not be get once at that time.
Joseph Qi
joseph.qi at huawei.com
Tue Sep 13 19:54:13 PDT 2016
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 at 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
>
More information about the Ocfs2-devel
mailing list