Whamcloud - gitweb
LU-6485 libcfs: embed kr_data into kkuc_reg
[fs/lustre-release.git] / lustre / obdclass / obd_mount_server.c
index 1bd8d10..ef453b0 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2013, Intel Corporation.
+ * Copyright (c) 2013, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -241,8 +241,8 @@ static int server_start_mgs(struct super_block *sb)
 
        if (!rc) {
                rc = lustre_start_simple(LUSTRE_MGS_OBDNAME, LUSTRE_MGS_NAME,
-                                        LUSTRE_MGS_OBDNAME, 0, 0,
-                                        lsi->lsi_osd_obdname, 0);
+                                        LUSTRE_MGS_OBDNAME, NULL, NULL,
+                                        lsi->lsi_osd_obdname, NULL);
                /* server_deregister_mount() is not called previously, for lsi
                 * and other stuff can't be freed cleanly when mgs calls
                 * server_put_mount() in error handling case (see b=17758),
@@ -264,8 +264,14 @@ static int server_stop_mgs(struct super_block *sb)
 {
        struct obd_device *obd;
        int rc;
+       struct lustre_mount_info *lmi;
        ENTRY;
 
+       /* Do not stop MGS if this device is not the running MGT */
+       lmi = server_find_mount(LUSTRE_MGS_OBDNAME);
+       if (lmi != NULL && lmi->lmi_sb != sb)
+               RETURN(0);
+
        CDEBUG(D_MOUNT, "Stop MGS service %s\n", LUSTRE_MGS_OBDNAME);
 
        /* There better be only one MGS */
@@ -533,7 +539,8 @@ static int lustre_lwp_connect(struct obd_device *lwp)
        data->ocd_connect_flags |= OBD_CONNECT_MDS_MDS | OBD_CONNECT_FID |
                OBD_CONNECT_AT | OBD_CONNECT_LRU_RESIZE |
                OBD_CONNECT_FULL20 | OBD_CONNECT_LVB_TYPE |
-               OBD_CONNECT_LIGHTWEIGHT | OBD_CONNECT_LFSCK;
+               OBD_CONNECT_LIGHTWEIGHT | OBD_CONNECT_LFSCK |
+               OBD_CONNECT_BULK_MBITS;
        OBD_ALLOC_PTR(uuid);
        if (uuid == NULL)
                GOTO(out, rc = -ENOMEM);
@@ -609,7 +616,7 @@ static int lustre_lwp_setup(struct lustre_cfg *lcfg, struct lustre_sb_info *lsi,
        sprintf(lwpuuid, "%s_UUID", lwpname);
        rc = lustre_start_simple(lwpname, LUSTRE_LWP_NAME,
                                 lwpuuid, lustre_cfg_string(lcfg, 1),
-                                0, 0, 0);
+                                NULL, NULL, NULL);
        if (rc) {
                CERROR("%s: setup up failed: rc %d\n", lwpname, rc);
                GOTO(out, rc);
@@ -877,7 +884,7 @@ static int lustre_disconnect_lwp(struct super_block *sb)
                /* end log first */
                cfg->cfg_instance = sb;
                rc = lustre_end_log(sb, logname, cfg);
-               if (rc != 0)
+               if (rc != 0 && rc != -ENOENT)
                        GOTO(out, rc);
 
                lsi->lsi_lwp_started = 0;
@@ -986,8 +993,8 @@ static int lustre_start_lwp(struct super_block *sb)
        cfg->cfg_callback = client_lwp_config_process;
        cfg->cfg_instance = sb;
        rc = lustre_process_log(sb, logname, cfg);
-       if (rc == 0)
-               lsi->lsi_lwp_started = 1;
+       /* need to remove config llog from mgc */
+       lsi->lsi_lwp_started = 1;
 
        GOTO(out, rc);
 
@@ -1047,7 +1054,6 @@ int server_mti_print(const char *title, struct mgs_target_info *mti)
                  mti->mti_config_ver, mti->mti_flags);
        return 0;
 }
-EXPORT_SYMBOL(server_mti_print);
 
 /* Generate data for registration */
 static int server_lsi2mti(struct lustre_sb_info *lsi,
@@ -1164,8 +1170,8 @@ static int server_register_target(struct lustre_sb_info *lsi)
                                "rc = %d. Is the MGS running?\n",
                                lsi->lsi_svname, rc);
                } else {
-                       CERROR("%s: error registering with the MGS: rc = %d "
-                              "(not fatal)\n", lsi->lsi_svname, rc);
+                       CDEBUG(D_HA, "%s: error registering with the MGS: "
+                              "rc = %d (not fatal)\n", lsi->lsi_svname, rc);
                        /* reset the error code for non-fatal error. */
                        rc = 0;
                }
@@ -1245,7 +1251,7 @@ static int server_start_targets(struct super_block *sb)
                        rc = lustre_start_simple(LUSTRE_MDS_OBDNAME,
                                                 LUSTRE_MDS_NAME,
                                                 LUSTRE_MDS_OBDNAME"_uuid",
-                                                0, 0, 0, 0);
+                                                NULL, NULL, NULL, NULL);
                        if (rc) {
                                mutex_unlock(&server_start_lock);
                                CERROR("failed to start MDS: %d\n", rc);
@@ -1264,7 +1270,7 @@ static int server_start_targets(struct super_block *sb)
                        rc = lustre_start_simple(LUSTRE_OSS_OBDNAME,
                                                 LUSTRE_OSS_NAME,
                                                 LUSTRE_OSS_OBDNAME"_uuid",
-                                                0, 0, 0, 0);
+                                                NULL, NULL, NULL, NULL);
                        if (rc) {
                                mutex_unlock(&server_start_lock);
                                CERROR("failed to start OSS: %d\n", rc);
@@ -1481,9 +1487,13 @@ static void server_put_super(struct super_block *sb)
                   If there are any setup/cleanup errors, save the lov
                   name for safety cleanup later. */
                lprof = class_get_profile(lsi->lsi_svname);
-               if (lprof && lprof->lp_dt) {
-                       OBD_ALLOC(extraname, strlen(lprof->lp_dt) + 1);
-                       strcpy(extraname, lprof->lp_dt);
+               if (lprof != NULL) {
+                       if (lprof->lp_dt != NULL) {
+                               OBD_ALLOC(extraname, strlen(lprof->lp_dt) + 1);
+                               strncpy(extraname, lprof->lp_dt,
+                                       strlen(lprof->lp_dt) + 1);
+                       }
+                       class_put_profile(lprof);
                }
 
                obd = class_name2obd(lsi->lsi_svname);
@@ -1630,7 +1640,7 @@ static const struct inode_operations server_inode_operations = {
 
 static int server_fill_super_common(struct super_block *sb)
 {
-       struct inode *root = 0;
+       struct inode *root = NULL;
        ENTRY;
 
        CDEBUG(D_MOUNT, "Server sb, dev=%d\n", (int)sb->s_dev);
@@ -1868,4 +1878,3 @@ void server_calc_timeout(struct lustre_sb_info *lsi, struct obd_device *obd)
        obd->obd_recovery_time_hard = hard;
        obd->obd_recovery_ir_factor = factor;
 }
-EXPORT_SYMBOL(server_calc_timeout);