X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Fptlrpc%2Fptlrpc_module.c;h=cd73db80c0f9823abfe6ccd3c621bb9f3ba71c9d;hb=917655fc2938b90a9c246dd2d58408c42aa1658d;hp=1026e4862c3c7ab393dcd8f530f7e70ad5578d02;hpb=08aa217ce49aba1ded52e0f7adb8a607035123fd;p=fs%2Flustre-release.git diff --git a/lustre/ptlrpc/ptlrpc_module.c b/lustre/ptlrpc/ptlrpc_module.c index 1026e48..cd73db8 100644 --- a/lustre/ptlrpc/ptlrpc_module.c +++ b/lustre/ptlrpc/ptlrpc_module.c @@ -15,11 +15,7 @@ * * 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 -#endif #include #include @@ -47,118 +40,111 @@ #include "ptlrpc_internal.h" -extern spinlock_t ptlrpc_last_xid_lock; -#if RS_DEBUG -extern spinlock_t ptlrpc_rs_debug_lock; -#endif -extern spinlock_t ptlrpc_all_services_lock; -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 - spin_lock_init(&ptlrpc_all_services_lock); + 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); -#ifdef __KERNEL__ - cleanup_phase = 7; - rc = tgt_mod_init(); + rc = ptlrpc_nrs_init(); if (rc) - GOTO(cleanup, rc); -#endif - RETURN(0); + GOTO(err_sptlrpc, rc); -cleanup: - switch(cleanup_phase) { -#ifdef __KERNEL__ - case 7: - llog_recov_fini(); -#endif - 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; + rc = nodemap_mod_init(); + if (rc) + GOTO(err_nrs, 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) { + nodemap_mod_exit(); + ptlrpc_nrs_fini(); + sptlrpc_fini(); + ldlm_exit(); + ptlrpc_stop_pinger(); + ptlrpc_exit_portals(); + ptlrpc_request_cache_fini(); + ptlrpc_hr_fini(); + ptlrpc_connection_fini(); tgt_mod_exit(); - llog_recov_fini(); - sptlrpc_fini(); - ldlm_exit(); - ptlrpc_stop_pinger(); - ptlrpc_exit_portals(); - ptlrpc_hr_fini(); - ptlrpc_connection_fini(); + req_layout_fini(); } -MODULE_AUTHOR("Sun Microsystems, Inc. "); +MODULE_AUTHOR("OpenSFS, Inc. "); 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);