From: Sunil Mushran <sunil.mushran@oracle.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [nov 28] question of dlm_get_lock_resource()
Date: Mon, 01 Dec 2008 18:43:16 -0800 [thread overview]
Message-ID: <4934A0C4.2090404@oracle.com> (raw)
In-Reply-To: <492FEC31.5010907@suse.de>
No. dlm->spinlock prevents it racing the dlm_thread. Secondly, lookup
also does a get.
What scenario are you envisioning?
Coly Li wrote:
> Hi list,
>
> When I read code of dlm_get_lock_resource(), there is something not clear to me.
>
> 719 lookup:
> 720 spin_lock(&dlm->spinlock);
> 721 tmpres = __dlm_lookup_lockres_full(dlm, lockid, namelen, hash);
> 722 if (tmpres) {
> 723 int dropping_ref = 0;
> 724
> 725 spin_lock(&tmpres->spinlock);
> 726 if (tmpres->owner == dlm->node_num) {
> 727 BUG_ON(tmpres->state & DLM_LOCK_RES_DROPPING_REF);
> 728 dlm_lockres_grab_inflight_ref(dlm, tmpres);
> 729 } else if (tmpres->state & DLM_LOCK_RES_DROPPING_REF)
> 730 dropping_ref = 1;
> 731 spin_unlock(&tmpres->spinlock);
> 732 spin_unlock(&dlm->spinlock);
> 733
> 734 /* wait until done messaging the master, drop our ref to allow
> 735 * the lockres to be purged, start over. */
> 736 if (dropping_ref) {
> 737 spin_lock(&tmpres->spinlock);
> 738 __dlm_wait_on_lockres_flags(tmpres, DLM_LOCK_RES_DROPPING_REF);
> 739 spin_unlock(&tmpres->spinlock);
> 740 dlm_lockres_put(tmpres);
> 741 tmpres = NULL;
> 742 goto lookup;
> 743 }
> 744
> 745 mlog(0, "found in hash!\n");
> 746 if (res)
> 747 dlm_lockres_put(res);
> 748 res = tmpres;
> 749 goto leave;
> 750 }
>
> If at line 721 tmpres found from hash, and its state is not DLM_LOCK_RES_DROPPING_REF (dropping_ref
> is 0), between line 733 and 748, is it possible to set tmpres->state to DLM_LOCK_RES_DROPPING_REF ?
>
> I don't see any protection for this race, maybe there is something I missed. Can anybody give me a
> hint ?
>
> Thanks.
>
next prev parent reply other threads:[~2008-12-02 2:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-28 13:03 [Ocfs2-devel] [nov 28] question of dlm_get_lock_resource() Coly Li
2008-12-02 2:43 ` Sunil Mushran [this message]
2008-12-02 16:49 ` Coly Li
2008-12-02 19:16 ` Sunil Mushran
2008-12-02 21:31 ` Sunil Mushran
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=4934A0C4.2090404@oracle.com \
--to=sunil.mushran@oracle.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.