Whamcloud - gitweb
LU-13004 ptlrpc: Allow BULK_BUF_KIOV to accept a kvec
[fs/lustre-release.git] / lustre / ptlrpc / ptlrpc_module.c
index 51869db..cd73db8 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -36,9 +32,6 @@
 
 #define DEBUG_SUBSYSTEM S_RPC
 
-#ifndef __KERNEL__
-# include <liblustre.h>
-#endif
 
 #include <obd_support.h>
 #include <obd_class.h>
 
 #include "ptlrpc_internal.h"
 
-extern spinlock_t ptlrpc_last_xid_lock;
-#if RS_DEBUG
-extern spinlock_t ptlrpc_rs_debug_lock;
-#endif
-extern struct mutex pinger_mutex;
-extern struct mutex ptlrpcd_mutex;
-
-__init int ptlrpc_init(void)
+static __init int ptlrpc_init(void)
 {
-        int rc, cleanup_phase = 0;
-        ENTRY;
+       int rc;
+
+       ENTRY;
 
-        lustre_assert_wire_constants();
+       lustre_assert_wire_constants();
 #if RS_DEBUG
        spin_lock_init(&ptlrpc_rs_debug_lock);
 #endif
+       INIT_LIST_HEAD(&ptlrpc_all_services);
        mutex_init(&ptlrpc_all_services_mutex);
        mutex_init(&pinger_mutex);
        mutex_init(&ptlrpcd_mutex);
-        ptlrpc_init_xid();
+       ptlrpc_init_xid();
 
-        rc = req_layout_init();
-        if (rc)
-                RETURN(rc);
+       rc = req_layout_init();
+       if (rc)
+               RETURN(rc);
 
-        rc = ptlrpc_hr_init();
-        if (rc)
-                RETURN(rc);
+       rc = tgt_mod_init();
+       if (rc)
+               GOTO(err_layout, rc);
 
-        cleanup_phase = 1;
+       rc = ptlrpc_hr_init();
+       if (rc)
+               GOTO(err_tgt, rc);
 
-        rc = ptlrpc_init_portals();
-        if (rc)
-                GOTO(cleanup, rc);
-        cleanup_phase = 2;
+       rc = ptlrpc_request_cache_init();
+       if (rc)
+               GOTO(err_hr, rc);
 
-        rc = ptlrpc_connection_init();
-        if (rc)
-                GOTO(cleanup, rc);
-        cleanup_phase = 3;
+       rc = ptlrpc_init_portals();
+       if (rc)
+               GOTO(err_cache, rc);
 
-        ptlrpc_put_connection_superhack = ptlrpc_connection_put;
+       rc = ptlrpc_connection_init();
+       if (rc)
+               GOTO(err_portals, rc);
 
-        rc = ptlrpc_start_pinger();
-        if (rc)
-                GOTO(cleanup, rc);
-        cleanup_phase = 4;
+       ptlrpc_put_connection_superhack = ptlrpc_connection_put;
 
-        rc = ldlm_init();
-        if (rc)
-                GOTO(cleanup, rc);
-        cleanup_phase = 5;
+       rc = ptlrpc_start_pinger();
+       if (rc)
+               GOTO(err_conn, rc);
 
-        rc = sptlrpc_init();
-        if (rc)
-                GOTO(cleanup, rc);
+       rc = ldlm_init();
+       if (rc)
+               GOTO(err_pinger, rc);
 
-        cleanup_phase = 6;
-        rc = llog_recov_init();
-        if (rc)
-                GOTO(cleanup, rc);
+       rc = sptlrpc_init();
+       if (rc)
+               GOTO(err_ldlm, rc);
 
-       cleanup_phase = 7;
        rc = ptlrpc_nrs_init();
        if (rc)
-               GOTO(cleanup, rc);
+               GOTO(err_sptlrpc, rc);
 
-#ifdef __KERNEL__
-       cleanup_phase = 8;
-       rc = tgt_mod_init();
+       rc = nodemap_mod_init();
        if (rc)
-               GOTO(cleanup, rc);
-#endif
-        RETURN(0);
+               GOTO(err_nrs, rc);
 
-cleanup:
-        switch(cleanup_phase) {
-#ifdef __KERNEL__
-       case 8:
-               ptlrpc_nrs_fini();
-#endif
-       case 7:
-               llog_recov_fini();
-        case 6:
-                sptlrpc_fini();
-        case 5:
-                ldlm_exit();
-        case 4:
-                ptlrpc_stop_pinger();
-        case 3:
-                ptlrpc_connection_fini();
-        case 2:
-                ptlrpc_exit_portals();
-        case 1:
-                ptlrpc_hr_fini();
-                req_layout_fini();
-        default: ;
-        }
-
-        return rc;
+       RETURN(0);
+err_nrs:
+       ptlrpc_nrs_fini();
+err_sptlrpc:
+       sptlrpc_fini();
+err_ldlm:
+       ldlm_exit();
+err_pinger:
+       ptlrpc_stop_pinger();
+err_conn:
+       ptlrpc_connection_fini();
+err_portals:
+       ptlrpc_exit_portals();
+err_cache:
+       ptlrpc_request_cache_fini();
+err_hr:
+       ptlrpc_hr_fini();
+err_tgt:
+       tgt_mod_exit();
+err_layout:
+       req_layout_fini();
+       return rc;
 }
 
-#ifdef __KERNEL__
 static void __exit ptlrpc_exit(void)
 {
-       tgt_mod_exit();
+       nodemap_mod_exit();
        ptlrpc_nrs_fini();
-        llog_recov_fini();
-        sptlrpc_fini();
-        ldlm_exit();
-        ptlrpc_stop_pinger();
-        ptlrpc_exit_portals();
-        ptlrpc_hr_fini();
-        ptlrpc_connection_fini();
+       sptlrpc_fini();
+       ldlm_exit();
+       ptlrpc_stop_pinger();
+       ptlrpc_exit_portals();
+       ptlrpc_request_cache_fini();
+       ptlrpc_hr_fini();
+       ptlrpc_connection_fini();
+       tgt_mod_exit();
+       req_layout_fini();
 }
 
-MODULE_AUTHOR("Sun Microsystems, Inc. <http://www.lustre.org/>");
+MODULE_AUTHOR("OpenSFS, Inc. <http://www.lustre.org/>");
 MODULE_DESCRIPTION("Lustre Request Processor and Lock Management");
+MODULE_VERSION(LUSTRE_VERSION_STRING);
 MODULE_LICENSE("GPL");
 
-cfs_module(ptlrpc, "1.0.0", ptlrpc_init, ptlrpc_exit);
-#endif
+module_init(ptlrpc_init);
+module_exit(ptlrpc_exit);