Loading drivers/block/rbd.c +1 −1 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ static struct rbd_client *rbd_client_create(struct ceph_options *opt, kref_init(&rbdc->kref); INIT_LIST_HEAD(&rbdc->node); rbdc->client = ceph_create_client(opt, rbdc); rbdc->client = ceph_create_client(opt, rbdc, 0, 0); if (IS_ERR(rbdc->client)) goto out_rbdc; opt = NULL; /* Now rbdc->client is responsible for opt */ Loading fs/ceph/super.c +6 −3 Original line number Diff line number Diff line Loading @@ -430,20 +430,23 @@ struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt, struct ceph_options *opt) { struct ceph_fs_client *fsc; const unsigned supported_features = CEPH_FEATURE_FLOCK | CEPH_FEATURE_DIRLAYOUTHASH; const unsigned required_features = 0; int err = -ENOMEM; fsc = kzalloc(sizeof(*fsc), GFP_KERNEL); if (!fsc) return ERR_PTR(-ENOMEM); fsc->client = ceph_create_client(opt, fsc); fsc->client = ceph_create_client(opt, fsc, supported_features, required_features); if (IS_ERR(fsc->client)) { err = PTR_ERR(fsc->client); goto fail; } fsc->client->extra_mon_dispatch = extra_mon_dispatch; fsc->client->supported_features |= CEPH_FEATURE_FLOCK | CEPH_FEATURE_DIRLAYOUTHASH; fsc->client->monc.want_mdsmap = 1; fsc->mount_options = fsopt; Loading include/linux/ceph/libceph.h +3 −1 Original line number Diff line number Diff line Loading @@ -215,7 +215,9 @@ extern void ceph_destroy_options(struct ceph_options *opt); extern int ceph_compare_options(struct ceph_options *new_opt, struct ceph_client *client); extern struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private); void *private, unsigned supported_features, unsigned required_features); extern u64 ceph_client_id(struct ceph_client *client); extern void ceph_destroy_client(struct ceph_client *client); extern int __ceph_open_session(struct ceph_client *client, Loading net/ceph/ceph_common.c +24 −23 Original line number Diff line number Diff line Loading @@ -432,9 +432,12 @@ EXPORT_SYMBOL(ceph_client_id); /* * create a fresh client instance */ struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private) struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private, unsigned supported_features, unsigned required_features) { struct ceph_client *client; struct ceph_entity_addr *myaddr = NULL; int err = -ENOMEM; client = kzalloc(sizeof(*client), GFP_KERNEL); Loading @@ -449,15 +452,27 @@ 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->required_features = CEPH_FEATURE_REQUIRED_DEFAULT; client->supported_features = CEPH_FEATURE_SUPPORTED_DEFAULT | supported_features; client->required_features = CEPH_FEATURE_REQUIRED_DEFAULT | required_features; client->msgr = NULL; /* 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); /* subsystems */ err = ceph_monc_init(&client->monc, client); if (err < 0) goto fail; goto fail_msgr; err = ceph_osdc_init(&client->osdc, client); if (err < 0) goto fail_monc; Loading @@ -466,6 +481,8 @@ 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); Loading @@ -490,7 +507,6 @@ void ceph_destroy_client(struct ceph_client *client) ceph_debugfs_client_cleanup(client); if (client->msgr) ceph_messenger_destroy(client->msgr); ceph_destroy_options(client->options); Loading @@ -514,24 +530,9 @@ static int have_mon_and_osd_map(struct ceph_client *client) */ int __ceph_open_session(struct ceph_client *client, unsigned long started) { struct ceph_entity_addr *myaddr = NULL; int err; unsigned long timeout = client->options->mount_timeout * HZ; /* initialize the messenger */ if (client->msgr == NULL) { 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)) { client->msgr = NULL; return PTR_ERR(client->msgr); } client->msgr->nocrc = ceph_test_opt(client, NOCRC); } /* open session, and wait for mon and osd maps */ err = ceph_monc_open_session(&client->monc); if (err < 0) Loading Loading
drivers/block/rbd.c +1 −1 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ static struct rbd_client *rbd_client_create(struct ceph_options *opt, kref_init(&rbdc->kref); INIT_LIST_HEAD(&rbdc->node); rbdc->client = ceph_create_client(opt, rbdc); rbdc->client = ceph_create_client(opt, rbdc, 0, 0); if (IS_ERR(rbdc->client)) goto out_rbdc; opt = NULL; /* Now rbdc->client is responsible for opt */ Loading
fs/ceph/super.c +6 −3 Original line number Diff line number Diff line Loading @@ -430,20 +430,23 @@ struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt, struct ceph_options *opt) { struct ceph_fs_client *fsc; const unsigned supported_features = CEPH_FEATURE_FLOCK | CEPH_FEATURE_DIRLAYOUTHASH; const unsigned required_features = 0; int err = -ENOMEM; fsc = kzalloc(sizeof(*fsc), GFP_KERNEL); if (!fsc) return ERR_PTR(-ENOMEM); fsc->client = ceph_create_client(opt, fsc); fsc->client = ceph_create_client(opt, fsc, supported_features, required_features); if (IS_ERR(fsc->client)) { err = PTR_ERR(fsc->client); goto fail; } fsc->client->extra_mon_dispatch = extra_mon_dispatch; fsc->client->supported_features |= CEPH_FEATURE_FLOCK | CEPH_FEATURE_DIRLAYOUTHASH; fsc->client->monc.want_mdsmap = 1; fsc->mount_options = fsopt; Loading
include/linux/ceph/libceph.h +3 −1 Original line number Diff line number Diff line Loading @@ -215,7 +215,9 @@ extern void ceph_destroy_options(struct ceph_options *opt); extern int ceph_compare_options(struct ceph_options *new_opt, struct ceph_client *client); extern struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private); void *private, unsigned supported_features, unsigned required_features); extern u64 ceph_client_id(struct ceph_client *client); extern void ceph_destroy_client(struct ceph_client *client); extern int __ceph_open_session(struct ceph_client *client, Loading
net/ceph/ceph_common.c +24 −23 Original line number Diff line number Diff line Loading @@ -432,9 +432,12 @@ EXPORT_SYMBOL(ceph_client_id); /* * create a fresh client instance */ struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private) struct ceph_client *ceph_create_client(struct ceph_options *opt, void *private, unsigned supported_features, unsigned required_features) { struct ceph_client *client; struct ceph_entity_addr *myaddr = NULL; int err = -ENOMEM; client = kzalloc(sizeof(*client), GFP_KERNEL); Loading @@ -449,15 +452,27 @@ 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->required_features = CEPH_FEATURE_REQUIRED_DEFAULT; client->supported_features = CEPH_FEATURE_SUPPORTED_DEFAULT | supported_features; client->required_features = CEPH_FEATURE_REQUIRED_DEFAULT | required_features; client->msgr = NULL; /* 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); /* subsystems */ err = ceph_monc_init(&client->monc, client); if (err < 0) goto fail; goto fail_msgr; err = ceph_osdc_init(&client->osdc, client); if (err < 0) goto fail_monc; Loading @@ -466,6 +481,8 @@ 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); Loading @@ -490,7 +507,6 @@ void ceph_destroy_client(struct ceph_client *client) ceph_debugfs_client_cleanup(client); if (client->msgr) ceph_messenger_destroy(client->msgr); ceph_destroy_options(client->options); Loading @@ -514,24 +530,9 @@ static int have_mon_and_osd_map(struct ceph_client *client) */ int __ceph_open_session(struct ceph_client *client, unsigned long started) { struct ceph_entity_addr *myaddr = NULL; int err; unsigned long timeout = client->options->mount_timeout * HZ; /* initialize the messenger */ if (client->msgr == NULL) { 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)) { client->msgr = NULL; return PTR_ERR(client->msgr); } client->msgr->nocrc = ceph_test_opt(client, NOCRC); } /* open session, and wait for mon and osd maps */ err = ceph_monc_open_session(&client->monc); if (err < 0) Loading