zfcp_aux.c (bd3238667ba76026bb543a953d63c11c4d52f28d) zfcp_aux.c (663e0890e31cb85f0cca5ac1faaee0d2d52880b5)
1/*
2 * zfcp device driver
3 *
4 * Module interface and handling of zfcp data structures.
5 *
6 * Copyright IBM Corp. 2002, 2010
7 */
8

--- 126 unchanged lines hidden (view full) ---

135
136 zfcp_scsi_transport_template =
137 fc_attach_transport(&zfcp_transport_functions);
138 if (!zfcp_scsi_transport_template)
139 goto out_transport;
140 scsi_transport_reserve_device(zfcp_scsi_transport_template,
141 sizeof(struct zfcp_scsi_dev));
142
1/*
2 * zfcp device driver
3 *
4 * Module interface and handling of zfcp data structures.
5 *
6 * Copyright IBM Corp. 2002, 2010
7 */
8

--- 126 unchanged lines hidden (view full) ---

135
136 zfcp_scsi_transport_template =
137 fc_attach_transport(&zfcp_transport_functions);
138 if (!zfcp_scsi_transport_template)
139 goto out_transport;
140 scsi_transport_reserve_device(zfcp_scsi_transport_template,
141 sizeof(struct zfcp_scsi_dev));
142
143
144 retval = misc_register(&zfcp_cfdc_misc);
145 if (retval) {
146 pr_err("Registering the misc device zfcp_cfdc failed\n");
147 goto out_misc;
148 }
149
150 retval = ccw_driver_register(&zfcp_ccw_driver);
151 if (retval) {
152 pr_err("The zfcp device driver could not register with "
153 "the common I/O layer\n");
154 goto out_ccw_register;
155 }
156
157 if (init_device)
158 zfcp_init_device_setup(init_device);
159 return 0;
160
161out_ccw_register:
143 retval = ccw_driver_register(&zfcp_ccw_driver);
144 if (retval) {
145 pr_err("The zfcp device driver could not register with "
146 "the common I/O layer\n");
147 goto out_ccw_register;
148 }
149
150 if (init_device)
151 zfcp_init_device_setup(init_device);
152 return 0;
153
154out_ccw_register:
162 misc_deregister(&zfcp_cfdc_misc);
163out_misc:
164 fc_release_transport(zfcp_scsi_transport_template);
165out_transport:
166 kmem_cache_destroy(zfcp_fc_req_cache);
167out_fc_cache:
168 kmem_cache_destroy(zfcp_fsf_qtcb_cache);
169out_qtcb_cache:
170 return retval;
171}
172
173module_init(zfcp_module_init);
174
175static void __exit zfcp_module_exit(void)
176{
177 ccw_driver_unregister(&zfcp_ccw_driver);
155 fc_release_transport(zfcp_scsi_transport_template);
156out_transport:
157 kmem_cache_destroy(zfcp_fc_req_cache);
158out_fc_cache:
159 kmem_cache_destroy(zfcp_fsf_qtcb_cache);
160out_qtcb_cache:
161 return retval;
162}
163
164module_init(zfcp_module_init);
165
166static void __exit zfcp_module_exit(void)
167{
168 ccw_driver_unregister(&zfcp_ccw_driver);
178 misc_deregister(&zfcp_cfdc_misc);
179 fc_release_transport(zfcp_scsi_transport_template);
180 kmem_cache_destroy(zfcp_fc_req_cache);
181 kmem_cache_destroy(zfcp_fsf_qtcb_cache);
182}
183
184module_exit(zfcp_module_exit);
185
186/**

--- 400 unchanged lines hidden ---
169 fc_release_transport(zfcp_scsi_transport_template);
170 kmem_cache_destroy(zfcp_fc_req_cache);
171 kmem_cache_destroy(zfcp_fsf_qtcb_cache);
172}
173
174module_exit(zfcp_module_exit);
175
176/**

--- 400 unchanged lines hidden ---