@@ -114,12 +114,21 @@ static DEFINE_MUTEX(nvme_subsystems_lock);
114114
115115static DEFINE_IDA (nvme_instance_ida );
116116static 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+ };
119126
120127static DEFINE_IDA (nvme_ns_chr_minor_ida );
121128static 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+ };
123132
124133static void nvme_put_subsystem (struct nvme_subsystem * subsys );
125134static 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)
28812890 subsys -> awupf = le16_to_cpu (id -> awupf );
28822891 nvme_mpath_default_iopolicy (subsys );
28832892
2884- subsys -> dev .class = nvme_subsys_class ;
2893+ subsys -> dev .class = & nvme_subsys_class ;
28852894 subsys -> dev .release = nvme_release_subsystem ;
28862895 subsys -> dev .groups = nvme_subsys_attrs_groups ;
28872896 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,
34353444 if (minor < 0 )
34363445 return minor ;
34373446 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 ;
34393448 cdev_device -> release = nvme_cdev_rel ;
34403449 device_initialize (cdev_device );
34413450 cdev_init (cdev , fops );
@@ -4627,7 +4636,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev,
46274636 ctrl -> device = & ctrl -> ctrl_device ;
46284637 ctrl -> device -> devt = MKDEV (MAJOR (nvme_ctrl_base_chr_devt ),
46294638 ctrl -> instance );
4630- ctrl -> device -> class = nvme_class ;
4639+ ctrl -> device -> class = & nvme_class ;
46314640 ctrl -> device -> parent = ctrl -> dev ;
46324641 if (ops -> dev_attr_groups )
46334642 ctrl -> device -> groups = ops -> dev_attr_groups ;
@@ -4860,42 +4869,36 @@ static int __init nvme_core_init(void)
48604869 if (result < 0 )
48614870 goto destroy_delete_wq ;
48624871
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 )
48664874 goto unregister_chrdev ;
4867- }
4868- nvme_class -> dev_uevent = nvme_class_uevent ;
48694875
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 )
48734878 goto destroy_class ;
4874- }
48754879
48764880 result = alloc_chrdev_region (& nvme_ns_chr_devt , 0 , NVME_MINORS ,
48774881 "nvme-generic" );
48784882 if (result < 0 )
48794883 goto destroy_subsys_class ;
48804884
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 )
48844887 goto unregister_generic_ns ;
4885- }
4888+
48864889 result = nvme_init_auth ();
48874890 if (result )
48884891 goto destroy_ns_chr ;
48894892 return 0 ;
48904893
48914894destroy_ns_chr :
4892- class_destroy ( nvme_ns_chr_class );
4895+ class_unregister ( & nvme_ns_chr_class );
48934896unregister_generic_ns :
48944897 unregister_chrdev_region (nvme_ns_chr_devt , NVME_MINORS );
48954898destroy_subsys_class :
4896- class_destroy ( nvme_subsys_class );
4899+ class_unregister ( & nvme_subsys_class );
48974900destroy_class :
4898- class_destroy ( nvme_class );
4901+ class_unregister ( & nvme_class );
48994902unregister_chrdev :
49004903 unregister_chrdev_region (nvme_ctrl_base_chr_devt , NVME_MINORS );
49014904destroy_delete_wq :
@@ -4911,9 +4914,9 @@ static int __init nvme_core_init(void)
49114914static void __exit nvme_core_exit (void )
49124915{
49134916 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 );
49174920 unregister_chrdev_region (nvme_ns_chr_devt , NVME_MINORS );
49184921 unregister_chrdev_region (nvme_ctrl_base_chr_devt , NVME_MINORS );
49194922 destroy_workqueue (nvme_delete_wq );
0 commit comments