[Ocfs2-devel] [PATCH] ocfs2: fix __ocfs2_cluster_lock() dead lock
Joel Becker
Joel.Becker at oracle.com
Wed Jan 13 17:01:33 PST 2010
On Wed, Jan 13, 2010 at 11:14:48AM -0800, Sunil Mushran wrote:
> Joel Becker wrote:
> > On Wed, Jan 13, 2010 at 11:20:49AM +0800, Wengang Wang wrote:
> >> before update_holders, the lock could be DCed(since no BUSY flag set by
> >> here).
> >>
> >> and even after update_holders, the lock could be DCed too.
> >>
> >> so that we get ocfs2_cluster_lock()(with holders increased) returned sucessfully
> >> but actually we don't hold the dlm lock. --thus more than one node is
> >> considering that they have the (EX) lock.
> >
> > You make a good point. I don't like the solution you propose,
> > though. Another flag that's almost the same? Eww! There's got to be a
> > better way.
>
> I don't see how we can resolve this without another flag. It could
> be a mirror image of the PENDING flag. PENDING takes care of the gap
> between BUSY set and calling dlm_lock(). This flag has to take care
> of the gap between BUSY clear and inc_holders.
>
> Am working on improving Wengang's patch.
I don't see anything yet, but PENDING is a complex enough flag
as-is. Another flag and we're even less understandable ;-( If we have
to do it, and I assume you'll set the flag in the ast when you clear
BUSY, I say call it UPCONVERT_FINISHING.
Oh, wait. This means that we can drop the
lock_attemped/lock_done state variable from wengang's original change.
Right before ocfs2_cluster_lock checks for BLOCKING, it can just check
flags&UPCONVERT_FINISHING and jump to inc_holders. Maybe this is in
wengang's update and I didn't notice.
> Mark is strangely silent.
He's probably busy.
Joel
--
One look at the From:
understanding has blossomed
.procmailrc grows
- Alexander Viro
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