Re: [PATCH 1a/7] dlm: core locking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 28, 2005 at 12:21:12PM -0700, Mark Fasheh wrote:

> > Just to clarify, though:  when the LOCAL resource is immediately created
> > and mastered locally, there must be a resource directory entry added for
> > it, right?  For us, the resource directory entry is added as part of a new
> > master lookup (which is being skipped).  If you don't add a directory
> > entry, how does another node that later wants to lock the same resource
> > (without LOCAL) discover who the master is?

> Yes, I believe LOCAL would always have to at least add a directory entry.
> For the OCFS2 dlm which does not use a resource directory, the entry would
> just exist on the creating node and other nodes would discover it later via
> query.

OK, sounds like an interesting tradeoff.  If any node can be master of a
resource, and there's no resource directory, then any new non-LOCAL
request must query every other node to check if it's the master.  A look
at your dlm shows this is the case:

while ((nodenum = dlm_node_iter_next(&iter)) >= 0) {
        ret = dlm_do_master_request(mle, nodenum);

Of course with a directory you just query one node to find if/who the
master is.  Which is better would depend on the usage. 

If you wanted to do a similar optimization as LOCAL with our dlm, you'd
use parent/child locks where the parent at the top of the tree would
require a lookup but all the child locks would only require local
processing.


> > If I understand LOCAL correctly, it should be simple for us to do.  We'd
> > still have a LOCAL request _send_ the lookup to create the directory
> > entry, but we'd simply not wait for the reply.  We'd assume, based on
> > LOCAL, that the lookup result indicates we're the master.

> I assume then that you can do that without racing the node who sent the
> LOCAL request and another node who comes in (just afterwards) for a master
> lookup? I bet the answer to that question would come to me if I read more of
> the code :)

Nope, my speculation on how we might do LOCAL above wouldn't work.  It now
seems clear that LOCAL can't really be done with a directory.

Dave

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux