Whamcloud - gitweb
- start seq mgr for data stack in separate portal;
authoryury <yury>
Thu, 10 Aug 2006 11:23:44 +0000 (11:23 +0000)
committeryury <yury>
Thu, 10 Aug 2006 11:23:44 +0000 (11:23 +0000)
- changes about thread names in seq mgr.

lustre/fid/fid_handler.c
lustre/fid/fid_store.c
lustre/include/lustre_fid.h

index e8f91ad..843d053 100644 (file)
@@ -455,6 +455,10 @@ static void seq_server_proc_fini(struct lu_server_seq *seq)
 }
 #endif
 
+#define LUSTRE_MD_SEQ_NAME "md-seq"
+#define LUSTRE_CT_SEQ_NAME "ct-seq"
+#define LUSTRE_DT_SEQ_NAME "dt-seq"
+
 int seq_server_init(struct lu_server_seq *seq,
                     struct dt_device *dev,
                     const char *uuid,
@@ -463,20 +467,31 @@ int seq_server_init(struct lu_server_seq *seq,
 {
         int is_srv = type == LUSTRE_SEQ_SERVER;
         
-        int rc, portal = is_srv ?
+        int rc, req_portal = is_srv ?
                 SEQ_SERVER_PORTAL : SEQ_CONTROLLER_PORTAL;
 
-        struct ptlrpc_service_conf seq_conf = {
+        struct ptlrpc_service_conf seq_md_conf = {
                 .psc_nbufs = MDS_NBUFS,
                 .psc_bufsize = MDS_BUFSIZE,
                 .psc_max_req_size = SEQ_MAXREQSIZE,
                 .psc_max_reply_size = SEQ_MAXREPSIZE,
-                .psc_req_portal = portal,
+                .psc_req_portal = req_portal,
                 .psc_rep_portal = MDC_REPLY_PORTAL,
                 .psc_watchdog_timeout = SEQ_SERVICE_WATCHDOG_TIMEOUT,
                 .psc_num_threads = SEQ_NUM_THREADS,
                 .psc_ctx_tags = LCT_MD_THREAD|LCT_DT_THREAD
         };
+        struct ptlrpc_service_conf seq_dt_conf = {
+                .psc_nbufs = MDS_NBUFS,
+                .psc_bufsize = MDS_BUFSIZE,
+                .psc_max_req_size = SEQ_MAXREQSIZE,
+                .psc_max_reply_size = SEQ_MAXREPSIZE,
+                .psc_req_portal = SEQ_SERVER_PORTAL,
+                .psc_rep_portal = OSC_REPLY_PORTAL,
+                .psc_watchdog_timeout = SEQ_SERVICE_WATCHDOG_TIMEOUT,
+                .psc_num_threads = SEQ_NUM_THREADS,
+                .psc_ctx_tags = LCT_MD_THREAD|LCT_DT_THREAD
+        };
         ENTRY;
 
        LASSERT(dev != NULL);
@@ -520,19 +535,36 @@ int seq_server_init(struct lu_server_seq *seq,
         if (rc)
                GOTO(out, rc);
 
-        seq->lss_service =  ptlrpc_init_svc_conf(&seq_conf,
-                                                seq_req_handle,
-                                                 LUSTRE_SEQ_NAME,
-                                                seq->lss_proc_entry,
-                                                NULL);
-       if (seq->lss_service != NULL)
-               rc = ptlrpc_start_threads(NULL, seq->lss_service,
-                                          LUSTRE_SEQ_NAME);
+        seq->lss_md_service = ptlrpc_init_svc_conf(&seq_md_conf,
+                                                   seq_req_handle,
+                                                   LUSTRE_SEQ_NAME,
+                                                   seq->lss_proc_entry,
+                                                   NULL);
+       if (seq->lss_md_service != NULL)
+               rc = ptlrpc_start_threads(NULL, seq->lss_md_service,
+                                          is_srv ? LUSTRE_MD_SEQ_NAME :
+                                                   LUSTRE_CT_SEQ_NAME);
        else
-               rc = -ENOMEM;
+                GOTO(out, rc = -ENOMEM);
 
+        /* 
+         * we want to have really cluster-wide sequences space. This is why we
+         * start only one sequence controller which manages space.
+         */
+        if (is_srv) {
+                seq->lss_dt_service =  ptlrpc_init_svc_conf(&seq_dt_conf,
+                                                            seq_req_handle,
+                                                            LUSTRE_SEQ_NAME,
+                                                            seq->lss_proc_entry,
+                                                            NULL);
+                if (seq->lss_dt_service != NULL)
+                        rc = ptlrpc_start_threads(NULL, seq->lss_dt_service,
+                                                  LUSTRE_DT_SEQ_NAME);
+                else
+                        GOTO(out, rc = -ENOMEM);
+        }
+        
        EXIT;
-
 out:
        if (rc) {
                seq_server_fini(seq, ctx);
@@ -549,9 +581,14 @@ void seq_server_fini(struct lu_server_seq *seq,
 {
         ENTRY;
 
-        if (seq->lss_service != NULL) {
-                ptlrpc_unregister_service(seq->lss_service);
-                seq->lss_service = NULL;
+        if (seq->lss_md_service != NULL) {
+                ptlrpc_unregister_service(seq->lss_md_service);
+                seq->lss_md_service = NULL;
+        }
+
+        if (seq->lss_dt_service != NULL) {
+                ptlrpc_unregister_service(seq->lss_dt_service);
+                seq->lss_dt_service = NULL;
         }
 
         seq_server_proc_fini(seq);
index 95361ed..3556738 100644 (file)
@@ -138,7 +138,8 @@ int seq_store_init(struct lu_server_seq *seq,
         int rc;
         ENTRY;
 
-        LASSERT(seq->lss_service == NULL);
+        LASSERT(seq->lss_md_service == NULL);
+        LASSERT(seq->lss_dt_service == NULL);
 
         dt_obj = dt_store_open(ctx, dt, "seq", &fid);
         if (!IS_ERR(dt_obj)) {
index 4a65066..829c0f3 100644 (file)
@@ -106,8 +106,11 @@ struct lu_server_seq {
         /* LUSTRE_SEQ_SERVER or LUSTRE_SEQ_CONTROLLER */
         enum lu_mgr_type       lss_type;
 
-        /* server side seq service */
-        struct ptlrpc_service  *lss_service;
+        /* server side seq service for metadata stack */
+        struct ptlrpc_service  *lss_md_service;
+
+        /* server side seq service for data stack */
+        struct ptlrpc_service  *lss_dt_service;
 
         /* client interafce to request controller */
         struct lu_client_seq   *lss_cli;