Message ID | 1345022611-14080-1-git-send-email-zheng.z.yan@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 15 Aug 2012, Yan, Zheng wrote: > From: "Yan, Zheng" <zheng.z.yan@intel.com> > > The global_id for ceph_auth_client is always zero. It prevents the > kernel from creating more than one ceph_clients that are connected > to the same cluster. (ceph_debugfs_client_init() fails to create > debugfs directory) > > Without this patch, I can't using rbd and cephfs on the same machine. > > Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com> This one is a bit more complicated. The global_id is a cluster-wide unique id assigned by the monitor. We can't set up the debugfs dir until we have that and the fsid. The check was in handle_monmap, I suspect because long ago the fsid was learned after the global_id, whereas now it is normally fsid and then global_id. I just sent two patches that restructure this so that we will initialize debugfs only after getting both values, regardless of which order. Let me know if that resolves things on your end; it's working for me :) Thanks! sage > --- > net/ceph/auth.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/ceph/auth.c b/net/ceph/auth.c > index b4bf4ac..2b00d3a 100644 > --- a/net/ceph/auth.c > +++ b/net/ceph/auth.c > @@ -12,6 +12,8 @@ > #include "auth_x.h" > > > +static u64 auth_global_id; > + > /* > * get protocol handler > */ > @@ -54,6 +56,7 @@ struct ceph_auth_client *ceph_auth_init(const char *name, const struct ceph_cryp > ac->name = CEPH_AUTH_NAME_DEFAULT; > dout("auth_init name %s\n", ac->name); > ac->key = key; > + ac->global_id = ++auth_global_id; > return ac; > > out: > -- > 1.7.11.2 > > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ceph/auth.c b/net/ceph/auth.c index b4bf4ac..2b00d3a 100644 --- a/net/ceph/auth.c +++ b/net/ceph/auth.c @@ -12,6 +12,8 @@ #include "auth_x.h" +static u64 auth_global_id; + /* * get protocol handler */ @@ -54,6 +56,7 @@ struct ceph_auth_client *ceph_auth_init(const char *name, const struct ceph_cryp ac->name = CEPH_AUTH_NAME_DEFAULT; dout("auth_init name %s\n", ac->name); ac->key = key; + ac->global_id = ++auth_global_id; return ac; out: