Whamcloud - gitweb
LU-12616 obclass: fix MDS start/stop race
[fs/lustre-release.git] / lustre / ost / ost_handler.c
index 0c95d7a..ab72698 100644 (file)
@@ -51,10 +51,20 @@ static int oss_num_threads;
 module_param(oss_num_threads, int, 0444);
 MODULE_PARM_DESC(oss_num_threads, "number of OSS service threads to start");
 
+static unsigned int oss_cpu_bind = 1;
+module_param(oss_cpu_bind, uint, 0444);
+MODULE_PARM_DESC(oss_cpu_bind,
+                "bind OSS service threads to particular CPU partitions");
+
 static int oss_num_create_threads;
 module_param(oss_num_create_threads, int, 0444);
 MODULE_PARM_DESC(oss_num_create_threads, "number of OSS create threads to start");
 
+static unsigned int oss_create_cpu_bind = 1;
+module_param(oss_create_cpu_bind, uint, 0444);
+MODULE_PARM_DESC(oss_create_cpu_bind,
+                "bind OSS create threads to particular CPU partitions");
+
 static char *oss_cpts;
 module_param(oss_cpts, charp, 0444);
 MODULE_PARM_DESC(oss_cpts, "CPU partitions OSS threads should run on");
@@ -100,11 +110,12 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
                        .tc_nthrs_base          = OSS_NTHRS_BASE,
                        .tc_nthrs_max           = oss_max_threads,
                        .tc_nthrs_user          = oss_num_threads,
-                       .tc_cpu_affinity        = 1,
+                       .tc_cpu_bind            = oss_cpu_bind,
                        .tc_ctx_tags            = LCT_DT_THREAD,
                },
                .psc_cpt                = {
                        .cc_pattern             = oss_cpts,
+                       .cc_affinity            = true,
                },
                .psc_ops                = {
                        .so_req_handler         = tgt_request_handle,
@@ -114,7 +125,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
        };
        ost->ost_service = ptlrpc_register_service(&svc_conf,
                                                   &obd->obd_kset,
-                                                  obd->obd_proc_entry);
+                                                  obd->obd_debugfs_entry);
        if (IS_ERR(ost->ost_service)) {
                rc = PTR_ERR(ost->ost_service);
                CERROR("failed to start service: %d\n", rc);
@@ -140,11 +151,12 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
                        .tc_nthrs_base          = OSS_CR_NTHRS_BASE,
                        .tc_nthrs_max           = OSS_CR_NTHRS_MAX,
                        .tc_nthrs_user          = oss_num_create_threads,
-                       .tc_cpu_affinity        = 1,
+                       .tc_cpu_bind            = oss_create_cpu_bind,
                        .tc_ctx_tags            = LCT_DT_THREAD,
                },
                .psc_cpt                = {
                        .cc_pattern             = oss_cpts,
+                       .cc_affinity            = true,
                },
                .psc_ops                = {
                        .so_req_handler         = tgt_request_handle,
@@ -153,7 +165,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
        };
        ost->ost_create_service = ptlrpc_register_service(&svc_conf,
                                                          &obd->obd_kset,
-                                                         obd->obd_proc_entry);
+                                                         obd->obd_debugfs_entry);
        if (IS_ERR(ost->ost_create_service)) {
                rc = PTR_ERR(ost->ost_create_service);
                CERROR("failed to start OST create service: %d\n", rc);
@@ -204,13 +216,14 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
                        .tc_nthrs_base          = OSS_NTHRS_BASE,
                        .tc_nthrs_max           = oss_max_threads,
                        .tc_nthrs_user          = oss_num_threads,
-                       .tc_cpu_affinity        = 1,
+                       .tc_cpu_bind            = oss_cpu_bind,
                        .tc_ctx_tags            = LCT_DT_THREAD,
                },
                .psc_cpt                = {
                        .cc_cptable             = ost_io_cptable,
                        .cc_pattern             = ost_io_cptable == NULL ?
                                                  oss_io_cpts : NULL,
+                       .cc_affinity            = true,
                },
                .psc_ops                = {
                        .so_thr_init            = tgt_io_thread_init,
@@ -222,7 +235,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
        };
        ost->ost_io_service = ptlrpc_register_service(&svc_conf,
                                                      &obd->obd_kset,
-                                                     obd->obd_proc_entry);
+                                                     obd->obd_debugfs_entry);
        if (IS_ERR(ost->ost_io_service)) {
                rc = PTR_ERR(ost->ost_io_service);
                CERROR("failed to start OST I/O service: %d\n", rc);
@@ -249,12 +262,13 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
                        .tc_nthrs_base          = OSS_CR_NTHRS_BASE,
                        .tc_nthrs_max           = OSS_CR_NTHRS_MAX,
                        .tc_nthrs_user          = oss_num_create_threads,
-                       .tc_cpu_affinity        = 1,
+                       .tc_cpu_bind            = oss_create_cpu_bind,
                        .tc_ctx_tags            = LCT_DT_THREAD,
                },
 
                .psc_cpt                = {
-                       .cc_pattern          = oss_cpts,
+                       .cc_pattern             = oss_cpts,
+                       .cc_affinity            = true,
                },
                .psc_ops                = {
                        .so_req_handler         = tgt_request_handle,
@@ -264,7 +278,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
        };
        ost->ost_seq_service = ptlrpc_register_service(&svc_conf,
                                                       &obd->obd_kset,
-                                                      obd->obd_proc_entry);
+                                                      obd->obd_debugfs_entry);
        if (IS_ERR(ost->ost_seq_service)) {
                rc = PTR_ERR(ost->ost_seq_service);
                CERROR("failed to start OST seq service: %d\n", rc);
@@ -296,12 +310,13 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
                        .tc_nthrs_base          = OSS_CR_NTHRS_BASE,
                        .tc_nthrs_max           = OSS_CR_NTHRS_MAX,
                        .tc_nthrs_user          = oss_num_create_threads,
-                       .tc_cpu_affinity        = 1,
+                       .tc_cpu_bind            = oss_create_cpu_bind,
                        .tc_ctx_tags            = LCT_MD_THREAD |
                                                  LCT_DT_THREAD,
                },
                .psc_cpt                = {
                        .cc_pattern             = oss_cpts,
+                       .cc_affinity            = true,
                },
                .psc_ops                = {
                        .so_req_handler         = tgt_request_handle,
@@ -311,7 +326,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg)
        };
        ost->ost_out_service = ptlrpc_register_service(&svc_conf,
                                                       &obd->obd_kset,
-                                                      obd->obd_proc_entry);
+                                                      obd->obd_debugfs_entry);
        if (IS_ERR(ost->ost_out_service)) {
                rc = PTR_ERR(ost->ost_out_service);
                CERROR("failed to start out service: %d\n", rc);
@@ -406,7 +421,7 @@ static int __init ost_init(void)
 
        ENTRY;
 
-       rc = class_register_type(&ost_obd_ops, NULL, true, NULL,
+       rc = class_register_type(&ost_obd_ops, NULL, false, NULL,
                                 LUSTRE_OSS_NAME, NULL);
 
         RETURN(rc);