On Mon, 10 Mar 2014, Gregory Farnum wrote:
> In src/mds/flock.cc:
> 
> > @@ -16,8 +16,7 @@ bool ceph_lock_state_t::is_waiting(ceph_filelock &fl)
> >        return false;
> >      if (p->second.length == fl.length &&
> >          p->second.client == fl.client &&
> > -        p->second.pid == fl.pid &&
> > -        p->second.pid_namespace == fl.pid_namespace)
> > +        p->second.owner == fl.owner)
> 
> Hrm. The reason we use the pid_namespace at all is because we actually got
> reports of these tests failing when somebody was using cgroups or something.
> So with the changes as they stand, we've made it so new clients will work
> with old servers, and new code works fine together, but old clients against
> new servers will not work if they're using process namespaces. I can't think
> of a good way to fix that without spending a feature bit; do you have any
> ideas @ukernel ? Or @liewegas?

Since this is a u64 and there are no pids > 2^63, or (kernel) addrseses 
that span that boundary, we can make sure the new code unconditionally 
sets the most significant bit.  Then the MDS can either ignore or not 
ignore the second field based on that.

sage