diff mbox

libceph: Assign different global_id for each ceph_auth_client.

Message ID 1345022611-14080-1-git-send-email-zheng.z.yan@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Yan, Zheng Aug. 15, 2012, 9:23 a.m. UTC
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>
---
 net/ceph/auth.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Sage Weil Aug. 17, 2012, 4:40 p.m. UTC | #1
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 mbox

Patch

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: