Whamcloud - gitweb
Branch b1_4_mountconf
authornathan <nathan>
Tue, 6 Dec 2005 01:15:17 +0000 (01:15 +0000)
committernathan <nathan>
Tue, 6 Dec 2005 01:15:17 +0000 (01:15 +0000)
b=8007
almost connecting...

lustre/include/linux/lustre_idl.h
lustre/include/linux/lustre_net.h
lustre/ldlm/ldlm_lib.c
lustre/mgc/mgc_request.c
lustre/mgs/mgs_handler.c
lustre/mgs/mgs_internal.h
lustre/obdclass/obd_mount.c
lustre/ptlrpc/service.c
lustre/utils/mkfs_lustre.c

index e46d177..2c1cbb4 100644 (file)
@@ -86,7 +86,6 @@
 #define LDLM_CANCEL_REPLY_PORTAL       18
 #define MDS_SETATTR_PORTAL             22
 #define MDS_READPAGE_PORTAL            23
-#define MGC_REQUEST_PORTAL             24 
 #define MGC_REPLY_PORTAL               25
 #define MGS_REQUEST_PORTAL             26
 #define MGS_REPLY_PORTAL               27
index 420d6ed..56b2074 100644 (file)
 #define MDS_MAXREQSIZE  (5 * 1024)
 #define MDS_MAXREPSIZE  (9 * 1024)
 
-#define MGT_MAX_THREADS 32UL
-#define MGT_NUM_THREADS max(min_t(unsigned long, num_physpages / 8192, \
-                                  MGT_MAX_THREADS), 2UL)
+#define MGS_MAX_THREADS 32UL
+#define MGS_NUM_THREADS max(min_t(unsigned long, num_physpages / 8192, \
+                                  MGS_MAX_THREADS), 2UL)
 #define MGS_NBUFS       (64 * smp_num_cpus)
 #define MGS_BUFSIZE     (8 * 1024)
 
index a58eb3b..8851387 100644 (file)
@@ -208,7 +208,7 @@ int client_obd_setup(struct obd_device *obddev, obd_count len, void *buf)
                 rp_portal = MDC_REPLY_PORTAL;
                 connect_op = MDS_CONNECT;
         } else if (!strcmp(name, LUSTRE_MGC_NAME)) {
-                rq_portal = MGC_REQUEST_PORTAL;
+                rq_portal = MGS_REQUEST_PORTAL;
                 rp_portal = MGC_REPLY_PORTAL;
                 connect_op = MGMT_CONNECT;
         } else {
index 4afa46d..261889a 100644 (file)
@@ -438,9 +438,6 @@ static int mgc_import_event(struct obd_device *obd,
         LASSERT(imp->imp_obd == obd);
 
         switch (event) {
-        case IMP_EVENT_DISCON: {
-                break;
-        }
         case IMP_EVENT_INVALIDATE: {
                 struct ldlm_namespace *ns = obd->obd_namespace;
 
@@ -448,14 +445,13 @@ static int mgc_import_event(struct obd_device *obd,
 
                 break;
         }
-        case IMP_EVENT_INACTIVE: {
+        case IMP_EVENT_DISCON: 
+        case IMP_EVENT_INACTIVE: 
+        case IMP_EVENT_ACTIVE: 
+        case IMP_EVENT_OCD:
                 break;
-        }
-        case IMP_EVENT_ACTIVE: {
-                break;
-        }
         default:
-                CERROR("Unknown import event %d\n", event);
+                CERROR("Unknown import event %#x\n", event);
                 LBUG();
         }
         RETURN(rc);
index 1bee8c8..6a88785 100644 (file)
@@ -112,6 +112,8 @@ static int mgs_disconnect(struct obd_export *exp)
         RETURN(rc);
 }
 
+int mgs_handle(struct ptlrpc_request *req);
+
 /* Start the MGS obd */
 static int mgs_setup(struct obd_device *obd, obd_count len, void *buf)
 {
@@ -126,6 +128,7 @@ static int mgs_setup(struct obd_device *obd, obd_count len, void *buf)
 
         CDEBUG(D_CONFIG, "Starting MGS\n");
 
+        /* Find our disk */
         lmi = server_get_mount(obd->obd_name);
         if (!lmi) 
                 RETURN(rc = -EINVAL);
@@ -161,18 +164,39 @@ static int mgs_setup(struct obd_device *obd, obd_count len, void *buf)
         if (rc)
                 GOTO(err_fs, rc);
 
+        /* Internal mgs setup */
         mgs_init_db_list(obd);
 
+        /* Start the service threads */
+        mgs->mgs_service =
+                ptlrpc_init_svc(MGS_NBUFS, MGS_BUFSIZE, MGS_MAXREQSIZE,
+                                MGS_MAXREPSIZE, MGS_REQUEST_PORTAL, 
+                                MGC_REPLY_PORTAL, MGS_SERVICE_WATCHDOG_TIMEOUT,
+                                mgs_handle, LUSTRE_MGS_NAME, 
+                                obd->obd_proc_entry, NULL, MGS_NUM_THREADS);
+
+        if (!mgs->mgs_service) {
+                CERROR("failed to start service\n");
+                GOTO(err_fs, rc = -ENOMEM);
+        }
+
+        rc = ptlrpc_start_threads(obd, mgs->mgs_service, "lustre_mgs");
+        if (rc)
+                GOTO(err_thread, rc);
+
+        /* Setup proc */
         lprocfs_init_vars(mgs, &lvars);
         lprocfs_obd_setup(obd, lvars.obd_vars);
 
-        LCONSOLE_INFO("MGS %s started\n", obd->obd_name);
-
         ldlm_timeout = 6;
         ping_evictor_start();
 
+        LCONSOLE_INFO("MGS %s started\n", obd->obd_name);
+
         RETURN(0);
 
+err_thread:
+        ptlrpc_unregister_service(mgs->mgs_service);
 err_fs:
         /* No extra cleanup needed for llog_init_commit_thread() */
         mgs_fs_cleanup(obd);
@@ -192,8 +216,6 @@ static int mgs_precleanup(struct obd_device *obd, int stage)
         int rc = 0;
         ENTRY;
 
-        CDEBUG(D_MGS, "precleanup %d\n", stage);
-
         switch (stage) {
         case OBD_CLEANUP_SELF_EXP:
                 mgs_cleanup_db_list(obd);
@@ -214,10 +236,10 @@ static int mgs_cleanup(struct obd_device *obd)
         if (mgs->mgs_sb == NULL)
                 RETURN(0);
         save_dev = lvfs_sbdev(mgs->mgs_sb);
+        
+        lprocfs_obd_cleanup(obd);
 
-//       lprocfs_obd_cleanup(obd);
-
- //       mgs_update_server_data(obd, 1);
+        ptlrpc_unregister_service(mgs->mgs_service);
 
         mgs_fs_cleanup(obd);
 
@@ -393,57 +415,15 @@ int mgs_handle(struct ptlrpc_request *req)
         RETURN(0);
 }
 
-static int mgt_setup(struct obd_device *obd, obd_count len, void *buf)
+static struct dentry *mgs_lvfs_fid2dentry(__u64 id, __u32 gen, __u64 gr,
+                                             void *data)
 {
-        struct mgs_obd *mgs = &obd->u.mgs;
-        struct lprocfs_static_vars lvars;
-        int rc = 0;
-        ENTRY;
-
-       lprocfs_init_vars(mgt, &lvars);
-       lprocfs_obd_setup(obd, lvars.obd_vars);
-
-        mgs->mgs_service =
-                ptlrpc_init_svc(MGS_NBUFS, MGS_BUFSIZE, MGS_MAXREQSIZE,
-                                MGS_MAXREPSIZE, MGS_REQUEST_PORTAL, 
-                                MGC_REPLY_PORTAL, MGS_SERVICE_WATCHDOG_TIMEOUT,
-                                mgs_handle, "mgs", obd->obd_proc_entry, NULL,
-                                MGT_NUM_THREADS);
-
-        if (!mgs->mgs_service) {
-                CERROR("failed to start service\n");
-                GOTO(err_lprocfs, rc = -ENOMEM);
-        }
-
-        rc = ptlrpc_start_threads(obd, mgs->mgs_service, "ll_mgt");
-        if (rc)
-                GOTO(err_thread, rc);
-
-        RETURN(0);
-
-err_thread:
-        ptlrpc_unregister_service(mgs->mgs_service);
-err_lprocfs:
-        lprocfs_obd_cleanup(obd);
-        return rc;
-}
-
-
-static int mgt_cleanup(struct obd_device *obd)
-{
-        struct mgs_obd *mgs = &obd->u.mgs;
-        ENTRY;
-
-        ptlrpc_unregister_service(mgs->mgs_service);
-
-        lprocfs_obd_cleanup(obd);
-
-        RETURN(0);
+        CERROR("Help!\n");
+        return NULL;
 }
 
 struct lvfs_callback_ops mgs_lvfs_ops = {
-     //     l_fid2dentry:     mgs_lvfs_fid2dentry,
-    //    l_open_llog:      mgs_lvfs_open_llog,
+        l_fid2dentry:     mgs_lvfs_fid2dentry,
 };
 
 /* use obd ops to offer management infrastructure */
@@ -457,20 +437,12 @@ static struct obd_ops mgs_obd_ops = {
         .o_iocontrol       = mgs_iocontrol,
 };
 
-static struct obd_ops mgt_obd_ops = {
-        .o_owner           = THIS_MODULE,
-        .o_setup           = mgt_setup,
-        .o_cleanup         = mgt_cleanup,
-};
-
 static int __init mgs_init(void)
 {
         struct lprocfs_static_vars lvars;
 
         lprocfs_init_vars(mgs, &lvars);
         class_register_type(&mgs_obd_ops, lvars.module_vars, LUSTRE_MGS_NAME);
-        lprocfs_init_vars(mgt, &lvars);
-        class_register_type(&mgt_obd_ops, lvars.module_vars, LUSTRE_MGT_NAME);
 
         return 0;
 }
@@ -478,7 +450,6 @@ static int __init mgs_init(void)
 static void /*__exit*/ mgs_exit(void)
 {
         class_unregister_type(LUSTRE_MGS_NAME);
-        class_unregister_type(LUSTRE_MGT_NAME);
 }
 
 MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
index 6bd6bec..a142fc4 100644 (file)
@@ -7,7 +7,8 @@
 
 #include <linux/lustre_mgs.h>
 
-#define MGS_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 1000)
+/* MDS has o_t * 1000 */
+#define MGS_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 10)
 
 extern struct lvfs_callback_ops mgs_lvfs_ops;
 
index 3e758cc..5607ccb 100644 (file)
@@ -680,8 +680,7 @@ static void server_stop_servers(struct super_block *sb)
         struct obd_device *obd;
 
         /* if this was an MDT, and there are no more MDT's, clean up the MDS */
-        if ((lsi->lsi_ldd->ldd_flags & LDD_F_SV_TYPE_MDT) &&
-            (obd = class_name2obd("MDS"))) {
+        if (IS_MDT(lsi->lsi_ldd) && (obd = class_name2obd("MDS"))) {
                 //FIXME pre-rename, should eventually be LUSTRE_MDT_NAME
                 struct obd_type *type = class_search_type(LUSTRE_MDS_NAME);
                 if (!type || !type->typ_refcnt) {
@@ -695,8 +694,7 @@ static void server_stop_servers(struct super_block *sb)
         }
 
         /* if this was an OST, and there are no more OST's, clean up the OSS */
-        if ((lsi->lsi_ldd->ldd_flags & LDD_F_SV_TYPE_OST) &&
-            (obd = class_name2obd("OSS"))) {
+        if (IS_OST(lsi->lsi_ldd) && (obd = class_name2obd("OSS"))) {
                 struct obd_type *type = class_search_type(LUSTRE_OST_NAME);
                 if (!type || !type->typ_refcnt) {
                         /* nobody is using the OST type, clean the OSS */
@@ -838,7 +836,7 @@ static int server_start_targets(struct super_block *sb, struct vfsmount *mnt)
 
         /* Get a new index if needed */
         if (lsi->lsi_ldd->ldd_flags & (LDD_F_NEED_INDEX | LDD_F_NEED_REGISTER)) {
-                CERROR("Need new target index from MGS!\n");
+                CDEBUG(D_MOUNT, "Need new target index from MGS\n");
                 rc = server_initial_connect(sb, mnt);
                 if (rc) {
                         CERROR("Initial connect failed for %s: %d\n", 
@@ -1044,7 +1042,7 @@ static void server_put_super(struct super_block *sb)
 
         /* If they wanted the mgs to stop separately from the mdt, they
            should have put it on a different device. */ 
-        if (lsi->lsi_ldd->ldd_flags & LDD_F_SV_TYPE_MGMT
+        if (IS_MGMT(lsi->lsi_ldd)
                 server_stop_mgs(sb);
 
         /* clean the mgc and sb */
@@ -1140,7 +1138,7 @@ static int server_fill_super(struct super_block *sb)
         }
 
         /* start MGS before MGC */
-        if (lsi->lsi_ldd->ldd_flags & LDD_F_SV_TYPE_MGMT) {
+        if (IS_MGMT(lsi->lsi_ldd)) {
                 rc = server_start_mgs(sb);
                 if (rc) {
                         CERROR("ignoring Failed MGS start!!\n");
@@ -1155,12 +1153,12 @@ static int server_fill_super(struct super_block *sb)
                 GOTO(out_mnt, rc);
 
         /* Set up all obd devices for service */
-        rc = server_start_targets(sb, mnt);
-        if (rc < 0) {
-                CERROR("Unable to start targets: %d\n", rc);
-                GOTO(out_mnt, rc);
-        }
-        
+        if (IS_OST(lsi->lsi_ldd) || IS_MDT(lsi->lsi_ldd)) {
+                rc = server_start_targets(sb, mnt);
+                if (rc < 0) {
+                        CERROR("Unable to start targets: %d\n", rc);
+                        GOTO(out_mnt, rc);
+                }
         /* FIXME overmount client here,
            or can we just start a client log and client_fill_super on this sb? 
            We need to make sure server_put_super gets called too - ll_put_super
@@ -1168,6 +1166,8 @@ static int server_fill_super(struct super_block *sb)
            call s_p_s if so. 
            Probably should start client from new thread so we can return.
            Client will not finish until all servers are connected. */
+        }
+
         rc = server_fill_super_common(sb);
         if (rc) 
                 GOTO(out_mnt, rc);
index af61984..643c9f4 100644 (file)
@@ -761,7 +761,9 @@ ptlrpc_check_rqbd_pool(struct ptlrpc_service *svc)
         if (avail <= low_water)
                 ptlrpc_grow_req_bufs(svc);
 
-        lprocfs_counter_add(svc->srv_stats, PTLRPC_REQBUF_AVAIL_CNTR, avail);
+        if (svc->srv_stats)
+                lprocfs_counter_add(svc->srv_stats, PTLRPC_REQBUF_AVAIL_CNTR,
+                                    avail);
 }
 
 static int
index 87dd039..0c9a0ec 100644 (file)
@@ -476,9 +476,8 @@ void print_ldd(struct lustre_disk_data *ldd)
         printf("Lustre FS:  %s\n", ldd->ldd_fsname);
         printf("Mount type: %s\n", MT_STR(ldd));
         printf("Flags:      %s%s%s%s\n",
-               ldd->ldd_flags & LDD_F_SV_TYPE_MDT  ? "MDT ":"",
-               ldd->ldd_flags & LDD_F_SV_TYPE_OST  ? "OST ":"",
-               ldd->ldd_flags & LDD_F_SV_TYPE_MGMT ? "MGT ":"",
+               IS_MDT(ldd) ? "MDT ":"", IS_OST(ldd) ? "OST ":"",
+               IS_MGMT(ldd) ? "MGMT ":"",
                ldd->ldd_flags & LDD_F_NEED_INDEX   ? "needs_index ":"");
         printf("Persistent mount opts: %s\n", ldd->ldd_mount_opts);
         printf("MGS nids: ");
@@ -606,7 +605,7 @@ int main(int argc , char *const argv[])
                 {"help", 0, 0, 'h'},
                 {"mdt", 0, 0, 'M'},
                 {"mgmt", 0, 0, 'G'},
-                {"mgmtnode", 1, 0, 'm'},
+                {"mgmtnid", 1, 0, 'm'},
                 {"mkfsoptions", 1, 0, 'k'},
                 {"mountfsoptions", 1, 0, 'o'},
                 {"ost", 0, 0, 'O'},
@@ -762,7 +761,8 @@ int main(int argc , char *const argv[])
                 exit(1);
         }
 
-        if (IS_MDT(&mop.mo_ldd) && !IS_MGMT(&mop.mo_ldd)) {
+        if (IS_MDT(&mop.mo_ldd) && !IS_MGMT(&mop.mo_ldd) && 
+            mop.mo_ldd.ldd_mgsnid_count == 0) {
                 vprint("No management node specified, adding MGS to this MDT\n");
                 mop.mo_ldd.ldd_flags |= LDD_F_SV_TYPE_MGMT;
         }