diff options
Diffstat (limited to 'net/ceph/ceph_common.c')
| -rw-r--r-- | net/ceph/ceph_common.c | 25 | 
1 files changed, 10 insertions, 15 deletions
diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c index ba4323bce0e..69e38db28e5 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c @@ -17,6 +17,7 @@  #include <linux/string.h> +#include <linux/ceph/ceph_features.h>  #include <linux/ceph/libceph.h>  #include <linux/ceph/debugfs.h>  #include <linux/ceph/decode.h> @@ -460,27 +461,23 @@ struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private,  	client->auth_err = 0;  	client->extra_mon_dispatch = NULL; -	client->supported_features = CEPH_FEATURE_SUPPORTED_DEFAULT | +	client->supported_features = CEPH_FEATURES_SUPPORTED_DEFAULT |  		supported_features; -	client->required_features = CEPH_FEATURE_REQUIRED_DEFAULT | +	client->required_features = CEPH_FEATURES_REQUIRED_DEFAULT |  		required_features;  	/* msgr */  	if (ceph_test_opt(client, MYIP))  		myaddr = &client->options->my_addr; -	client->msgr = ceph_messenger_create(myaddr, -					     client->supported_features, -					     client->required_features); -	if (IS_ERR(client->msgr)) { -		err = PTR_ERR(client->msgr); -		goto fail; -	} -	client->msgr->nocrc = ceph_test_opt(client, NOCRC); +	ceph_messenger_init(&client->msgr, myaddr, +		client->supported_features, +		client->required_features, +		ceph_test_opt(client, NOCRC));  	/* subsystems */  	err = ceph_monc_init(&client->monc, client);  	if (err < 0) -		goto fail_msgr; +		goto fail;  	err = ceph_osdc_init(&client->osdc, client);  	if (err < 0)  		goto fail_monc; @@ -489,8 +486,6 @@ struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private,  fail_monc:  	ceph_monc_stop(&client->monc); -fail_msgr: -	ceph_messenger_destroy(client->msgr);  fail:  	kfree(client);  	return ERR_PTR(err); @@ -501,6 +496,8 @@ void ceph_destroy_client(struct ceph_client *client)  {  	dout("destroy_client %p\n", client); +	atomic_set(&client->msgr.stopping, 1); +  	/* unmount */  	ceph_osdc_stop(&client->osdc); @@ -508,8 +505,6 @@ void ceph_destroy_client(struct ceph_client *client)  	ceph_debugfs_client_cleanup(client); -	ceph_messenger_destroy(client->msgr); -  	ceph_destroy_options(client->options);  	kfree(client);  |