@@ -114,12 +114,21 @@ static DEFINE_MUTEX(nvme_subsystems_lock);
114
114
115
115
static DEFINE_IDA (nvme_instance_ida );
116
116
static dev_t nvme_ctrl_base_chr_devt ;
117
- static struct class * nvme_class ;
118
- static struct class * nvme_subsys_class ;
117
+ static int nvme_class_uevent (const struct device * dev , struct kobj_uevent_env * env );
118
+ static const struct class nvme_class = {
119
+ .name = "nvme" ,
120
+ .dev_uevent = nvme_class_uevent ,
121
+ };
122
+
123
+ static const struct class nvme_subsys_class = {
124
+ .name = "nvme-subsystem" ,
125
+ };
119
126
120
127
static DEFINE_IDA (nvme_ns_chr_minor_ida );
121
128
static dev_t nvme_ns_chr_devt ;
122
- static struct class * nvme_ns_chr_class ;
129
+ static const struct class nvme_ns_chr_class = {
130
+ .name = "nvme-generic" ,
131
+ };
123
132
124
133
static void nvme_put_subsystem (struct nvme_subsystem * subsys );
125
134
static void nvme_remove_invalid_namespaces (struct nvme_ctrl * ctrl ,
@@ -2881,7 +2890,7 @@ static int nvme_init_subsystem(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id)
2881
2890
subsys -> awupf = le16_to_cpu (id -> awupf );
2882
2891
nvme_mpath_default_iopolicy (subsys );
2883
2892
2884
- subsys -> dev .class = nvme_subsys_class ;
2893
+ subsys -> dev .class = & nvme_subsys_class ;
2885
2894
subsys -> dev .release = nvme_release_subsystem ;
2886
2895
subsys -> dev .groups = nvme_subsys_attrs_groups ;
2887
2896
dev_set_name (& subsys -> dev , "nvme-subsys%d" , ctrl -> instance );
@@ -3435,7 +3444,7 @@ int nvme_cdev_add(struct cdev *cdev, struct device *cdev_device,
3435
3444
if (minor < 0 )
3436
3445
return minor ;
3437
3446
cdev_device -> devt = MKDEV (MAJOR (nvme_ns_chr_devt ), minor );
3438
- cdev_device -> class = nvme_ns_chr_class ;
3447
+ cdev_device -> class = & nvme_ns_chr_class ;
3439
3448
cdev_device -> release = nvme_cdev_rel ;
3440
3449
device_initialize (cdev_device );
3441
3450
cdev_init (cdev , fops );
@@ -4627,7 +4636,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,
4627
4636
ctrl -> device = & ctrl -> ctrl_device ;
4628
4637
ctrl -> device -> devt = MKDEV (MAJOR (nvme_ctrl_base_chr_devt ),
4629
4638
ctrl -> instance );
4630
- ctrl -> device -> class = nvme_class ;
4639
+ ctrl -> device -> class = & nvme_class ;
4631
4640
ctrl -> device -> parent = ctrl -> dev ;
4632
4641
if (ops -> dev_attr_groups )
4633
4642
ctrl -> device -> groups = ops -> dev_attr_groups ;
@@ -4860,42 +4869,36 @@ static int __init nvme_core_init(void)
4860
4869
if (result < 0 )
4861
4870
goto destroy_delete_wq ;
4862
4871
4863
- nvme_class = class_create ("nvme" );
4864
- if (IS_ERR (nvme_class )) {
4865
- result = PTR_ERR (nvme_class );
4872
+ result = class_register (& nvme_class );
4873
+ if (result )
4866
4874
goto unregister_chrdev ;
4867
- }
4868
- nvme_class -> dev_uevent = nvme_class_uevent ;
4869
4875
4870
- nvme_subsys_class = class_create ("nvme-subsystem" );
4871
- if (IS_ERR (nvme_subsys_class )) {
4872
- result = PTR_ERR (nvme_subsys_class );
4876
+ result = class_register (& nvme_subsys_class );
4877
+ if (result )
4873
4878
goto destroy_class ;
4874
- }
4875
4879
4876
4880
result = alloc_chrdev_region (& nvme_ns_chr_devt , 0 , NVME_MINORS ,
4877
4881
"nvme-generic" );
4878
4882
if (result < 0 )
4879
4883
goto destroy_subsys_class ;
4880
4884
4881
- nvme_ns_chr_class = class_create ("nvme-generic" );
4882
- if (IS_ERR (nvme_ns_chr_class )) {
4883
- result = PTR_ERR (nvme_ns_chr_class );
4885
+ result = class_register (& nvme_ns_chr_class );
4886
+ if (result )
4884
4887
goto unregister_generic_ns ;
4885
- }
4888
+
4886
4889
result = nvme_init_auth ();
4887
4890
if (result )
4888
4891
goto destroy_ns_chr ;
4889
4892
return 0 ;
4890
4893
4891
4894
destroy_ns_chr :
4892
- class_destroy ( nvme_ns_chr_class );
4895
+ class_unregister ( & nvme_ns_chr_class );
4893
4896
unregister_generic_ns :
4894
4897
unregister_chrdev_region (nvme_ns_chr_devt , NVME_MINORS );
4895
4898
destroy_subsys_class :
4896
- class_destroy ( nvme_subsys_class );
4899
+ class_unregister ( & nvme_subsys_class );
4897
4900
destroy_class :
4898
- class_destroy ( nvme_class );
4901
+ class_unregister ( & nvme_class );
4899
4902
unregister_chrdev :
4900
4903
unregister_chrdev_region (nvme_ctrl_base_chr_devt , NVME_MINORS );
4901
4904
destroy_delete_wq :
@@ -4911,9 +4914,9 @@ static int __init nvme_core_init(void)
4911
4914
static void __exit nvme_core_exit (void )
4912
4915
{
4913
4916
nvme_exit_auth ();
4914
- class_destroy ( nvme_ns_chr_class );
4915
- class_destroy ( nvme_subsys_class );
4916
- class_destroy ( nvme_class );
4917
+ class_unregister ( & nvme_ns_chr_class );
4918
+ class_unregister ( & nvme_subsys_class );
4919
+ class_unregister ( & nvme_class );
4917
4920
unregister_chrdev_region (nvme_ns_chr_devt , NVME_MINORS );
4918
4921
unregister_chrdev_region (nvme_ctrl_base_chr_devt , NVME_MINORS );
4919
4922
destroy_workqueue (nvme_delete_wq );
0 commit comments