* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2012, Intel Corporation.
+ * Copyright (c) 2012, 2014, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#define sfw_test_active(t) (atomic_read(&(t)->tsi_nactive) != 0)
#define sfw_batch_active(b) (atomic_read(&(b)->bat_nactive) != 0)
-struct smoketest_framework {
+static struct smoketest_framework {
/* RPCs to be recycled */
struct list_head fw_zombie_rpcs;
/* stopping sessions */
return 0;
}
-void
+static void
sfw_add_session_timer (void)
{
sfw_session_t *sn = sfw_data.fw_session;
return;
}
-int
+static int
sfw_del_session_timer (void)
{
sfw_session_t *sn = sfw_data.fw_session;
return 0;
}
-#ifndef __KERNEL__
- /* Racing is impossible in single-threaded userland selftest */
- LBUG();
-#endif
return EBUSY; /* racing with sfw_session_expired() */
}
spin_lock(&sfw_data.fw_lock);
}
-#ifndef __KERNEL__
-
-int
-sfw_session_removed (void)
-{
- return (sfw_data.fw_session == NULL) ? 1 : 0;
-}
-#endif
-
-void
+static void
sfw_session_expired (void *data)
{
sfw_session_t *sn = data;
}
/* completion handler for incoming framework RPCs */
-void
+static void
sfw_server_rpc_done(struct srpc_server_rpc *rpc)
{
struct srpc_service *sv = rpc->srpc_scd->scd_svc;
return;
}
-void
+static void
sfw_client_rpc_fini (srpc_client_rpc_t *rpc)
{
LASSERT(rpc->crpc_bulk.bk_niov == 0);
LASSERT(list_empty(&rpc->crpc_list));
LASSERT(atomic_read(&rpc->crpc_refcount) == 0);
-#ifndef __KERNEL__
- LASSERT(rpc->crpc_bulk.bk_pages == NULL);
-#endif
CDEBUG(D_NET, "Outgoing framework RPC done: "
"service %d, peer %s, status %s:%d:%d\n",
spin_unlock(&sfw_data.fw_lock);
}
-sfw_batch_t *
+static sfw_batch_t *
sfw_find_batch (lst_bid_t bid)
{
sfw_session_t *sn = sfw_data.fw_session;
return NULL;
}
-sfw_batch_t *
+static sfw_batch_t *
sfw_bid2batch (lst_bid_t bid)
{
sfw_session_t *sn = sfw_data.fw_session;
return bat;
LIBCFS_ALLOC(bat, sizeof(sfw_batch_t));
- if (bat == NULL)
+ if (bat == NULL)
return NULL;
bat->bat_error = 0;
return bat;
}
-int
+static int
sfw_get_stats (srpc_stat_reqst_t *request, srpc_stat_reply_t *reply)
{
sfw_session_t *sn = sfw_data.fw_session;
return 0;
}
-int
+static int
sfw_remove_session (srpc_rmsn_reqst_t *request, srpc_rmsn_reply_t *reply)
{
sfw_session_t *sn = sfw_data.fw_session;
return 0;
}
-int
+static int
sfw_debug_session (srpc_debug_reqst_t *request, srpc_debug_reply_t *reply)
{
sfw_session_t *sn = sfw_data.fw_session;
reply->dbg_status = ESRCH;
reply->dbg_sid = LST_INVALID_SID;
return 0;
- }
+ }
reply->dbg_status = 0;
reply->dbg_sid = sn->sn_id;
return 0;
}
-void
+static void
sfw_test_rpc_fini (srpc_client_rpc_t *rpc)
{
sfw_test_unit_t *tsu = rpc->crpc_priv;
return max(SFW_TEST_WI_MIN, nbuf + SFW_TEST_WI_EXTRA);
}
-int
+static int
sfw_load_test(struct sfw_test_instance *tsi)
{
struct sfw_test_case *tsc;
return 0;
}
-void
+static void
sfw_unload_test(struct sfw_test_instance *tsi)
{
struct sfw_test_case *tsc;
return;
}
-void
+static void
sfw_destroy_test_instance (sfw_test_instance_t *tsi)
{
srpc_client_rpc_t *rpc;
return;
}
-void
+static void
sfw_destroy_batch (sfw_batch_t *tsb)
{
sfw_test_instance_t *tsi;
return;
}
-void
+static void
sfw_unpack_addtest_req(srpc_msg_t *msg)
{
srpc_test_reqst_t *req = &msg->msg_body.tes_reqst;
return;
}
-int
+static int
sfw_add_test_instance (sfw_batch_t *tsb, srpc_server_rpc_t *rpc)
{
srpc_msg_t *msg = &rpc->srpc_reqstbuf->buf_msg;
}
LASSERT (bk != NULL);
-#ifndef __KERNEL__
- LASSERT (bk->bk_pages != NULL);
-#endif
LASSERT (bk->bk_niov * SFW_ID_PER_PAGE >= (unsigned int)ndest);
LASSERT((unsigned int)bk->bk_len >=
sizeof(lnet_process_id_packed_t) * ndest);
lnet_process_id_packed_t id;
int j;
-#ifdef __KERNEL__
dests = page_address(bk->bk_iovs[i / SFW_ID_PER_PAGE].kiov_page);
LASSERT (dests != NULL); /* my pages are within KVM always */
-#else
- dests = page_address(bk->bk_pages[i / SFW_ID_PER_PAGE]);
-#endif
id = dests[i % SFW_ID_PER_PAGE];
if (msg->msg_magic != SRPC_MSG_MAGIC)
sfw_unpack_id(id);
return;
}
-void
+static void
sfw_test_rpc_done (srpc_client_rpc_t *rpc)
{
sfw_test_unit_t *tsu = rpc->crpc_priv;
return 0;
}
-int
+static int
sfw_run_test (swi_workitem_t *wi)
{
sfw_test_unit_t *tsu = wi->swi_workitem.wi_data;
return 1;
}
-int
+static int
sfw_run_batch (sfw_batch_t *tsb)
{
swi_workitem_t *wi;
return 0;
}
-int
+static int
sfw_query_batch (sfw_batch_t *tsb, int testidx, srpc_batch_reply_t *reply)
{
sfw_test_instance_t *tsi;
return 0;
}
-int
+static int
sfw_add_test (srpc_server_rpc_t *rpc)
{
sfw_session_t *sn = sfw_data.fw_session;
return 0;
}
-int
+static int
sfw_control_batch (srpc_batch_reqst_t *request, srpc_batch_reply_t *reply)
{
sfw_session_t *sn = sfw_data.fw_session;
return 0;
}
-int
+static int
sfw_handle_server_rpc(struct srpc_server_rpc *rpc)
{
struct srpc_service *sv = rpc->srpc_scd->scd_svc;
rpc->srpc_done = sfw_server_rpc_done;
spin_lock(&sfw_data.fw_lock);
-#ifdef __KERNEL__
if (!sfw_data.fw_shuttingdown)
sfw_add_session_timer();
-#else
- LASSERT(!sfw_data.fw_shuttingdown);
- sfw_add_session_timer();
-#endif
sfw_data.fw_active_srpc = NULL;
spin_unlock(&sfw_data.fw_lock);
return rc;
}
-int
+static int
sfw_bulk_ready(struct srpc_server_rpc *rpc, int status)
{
struct srpc_service *sv = rpc->srpc_scd->scd_svc;
spin_lock(&sfw_data.fw_lock);
-#ifdef __KERNEL__
if (!sfw_data.fw_shuttingdown)
sfw_add_session_timer();
-#else
- LASSERT(!sfw_data.fw_shuttingdown);
- sfw_add_session_timer();
-#endif
sfw_data.fw_active_srpc = NULL;
spin_unlock(&sfw_data.fw_lock);
return;
}
-static srpc_service_t sfw_services[] =
+static srpc_service_t sfw_services[] =
{
{
/* sv_id */ SRPC_SERVICE_DEBUG,
}
};
-extern sfw_test_client_ops_t ping_test_client;
-extern srpc_service_t ping_test_service;
-extern void ping_init_test_client(void);
-extern void ping_init_test_service(void);
-
-extern sfw_test_client_ops_t brw_test_client;
-extern srpc_service_t brw_test_service;
-extern void brw_init_test_client(void);
-extern void brw_init_test_service(void);
-
-
int
sfw_startup (void)
{
srpc_service_t *sv;
sfw_test_case_t *tsc;
-#ifndef __KERNEL__
- char *s;
-
- s = getenv("SESSION_TIMEOUT");
- session_timeout = s != NULL ? atoi(s) : session_timeout;
-
- s = getenv("RPC_TIMEOUT");
- rpc_timeout = s != NULL ? atoi(s) : rpc_timeout;
-#endif
if (session_timeout < 0) {
CERROR ("Session timeout must be non-negative: %d\n",
spin_lock(&sfw_data.fw_lock);
sfw_data.fw_shuttingdown = 1;
-#ifdef __KERNEL__
lst_wait_until(sfw_data.fw_active_srpc == NULL, sfw_data.fw_lock,
"waiting for active RPC to finish.\n");
-#else
- LASSERT (sfw_data.fw_active_srpc == NULL);
-#endif
if (sfw_del_session_timer() != 0)
lst_wait_until(sfw_data.fw_session == NULL, sfw_data.fw_lock,