Make man page for ploadstart The structure +static char buffer[1000000]; make this dynamic please - 1mb used all the time for a test service doesn't make alot of sense. I know it was this way in the code previously but freeing was difficult, now freeing doesn't matter since the patch exits. Reviewed-by: Steven Dake <sdake@xxxxxxxxxx> On 03/10/2012 09:15 AM, Fabio M. Di Nitto wrote: > From: "Fabio M. Di Nitto" <fdinitto@xxxxxxxxxx> > > pload is a performance benchmark that measures the onwire > speed of corosync. > > problem is that once pload has been executed, the cluster > is basically dead. > > turn pload into a test tool, by removing corosync-pload tool > and user library. > > cleanup pload code to make it more readable and drop lots > of unnecessary stuff. > > add test/ploadstart tool that can configure and start pload > via cmap calls. > > Signed-off-by: Fabio M. Di Nitto <fdinitto@xxxxxxxxxx> > --- > configure.ac | 1 - > corosync.spec.in | 4 - > exec/coroparse.c | 14 ++ > exec/pload.c | 343 ++++++++++++++++++++++-------------------- > exec/util.h | 3 +- > include/Makefile.am | 4 +- > include/corosync/ipc_pload.h | 70 --------- > include/corosync/pload.h | 110 -------------- > lib/Makefile.am | 5 +- > lib/libpload.versions | 6 - > lib/libpload.verso | 1 - > lib/pload.c | 202 ------------------------- > man/Makefile.am | 1 - > man/corosync-pload.8 | 69 --------- > man/index.html | 4 - > pkgconfig/Makefile.am | 2 +- > test/Makefile.am | 10 +- > test/ploadstart.sh | 60 ++++++++ > tools/.gitignore | 1 - > tools/Makefile.am | 5 +- > tools/corosync-pload.c | 79 ---------- > 21 files changed, 270 insertions(+), 724 deletions(-) > delete mode 100644 include/corosync/ipc_pload.h > delete mode 100644 include/corosync/pload.h > delete mode 100644 lib/libpload.versions > delete mode 100644 lib/libpload.verso > delete mode 100644 lib/pload.c > delete mode 100644 man/corosync-pload.8 > create mode 100644 test/ploadstart.sh > delete mode 100644 tools/corosync-pload.c > > diff --git a/configure.ac b/configure.ac > index 9f22fce..721eb2d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -217,7 +217,6 @@ SONAME="${SOMAJOR}.${SOMINOR}.${SOMICRO}" > LIB_SONAME_IMPORT([cfg]) > LIB_SONAME_IMPORT([cpg]) > LIB_SONAME_IMPORT([evs]) > -LIB_SONAME_IMPORT([pload]) > LIB_SONAME_IMPORT([quorum]) > LIB_SONAME_IMPORT([sam]) > LIB_SONAME_IMPORT([votequorum]) > diff --git a/corosync.spec.in b/corosync.spec.in > index b7e21a9..51fb7ad 100644 > --- a/corosync.spec.in > +++ b/corosync.spec.in > @@ -151,7 +151,6 @@ fi > %{_sbindir}/corosync-cmapctl > %{_sbindir}/corosync-cfgtool > %{_sbindir}/corosync-fplay > -%{_sbindir}/corosync-pload > %{_sbindir}/corosync-cpgtool > %{_sbindir}/corosync-quorumtool > %{_sbindir}/corosync-notifyd > @@ -191,7 +190,6 @@ fi > %{_mandir}/man8/corosync-cfgtool.8* > %{_mandir}/man8/corosync-cpgtool.8* > %{_mandir}/man8/corosync-fplay.8* > -%{_mandir}/man8/corosync-pload.8* > %{_mandir}/man8/corosync-notifyd.8* > %{_mandir}/man8/corosync-quorumtool.8* > %{_mandir}/man5/corosync.conf.5* > @@ -241,7 +239,6 @@ This package contains corosync libraries. > %{_libdir}/libtotem_pg.so.* > %{_libdir}/libquorum.so.* > %{_libdir}/libvotequorum.so.* > -%{_libdir}/libpload.so.* > %{_libdir}/libsam.so.* > %{_libdir}/libcorosync_common.so.* > > @@ -286,7 +283,6 @@ The Corosync Cluster Engine APIs. > %{_libdir}/libtotem_pg.so > %{_libdir}/libquorum.so > %{_libdir}/libvotequorum.so > -%{_libdir}/libpload.so > %{_libdir}/libsam.so > %{_libdir}/libcorosync_common.so > %{_libdir}/pkgconfig/*.pc > diff --git a/exec/coroparse.c b/exec/coroparse.c > index c69a462..e9081ff 100644 > --- a/exec/coroparse.c > +++ b/exec/coroparse.c > @@ -90,6 +90,7 @@ enum main_cp_cb_data_state { > MAIN_CP_CB_DATA_STATE_QDEVICE, > MAIN_CP_CB_DATA_STATE_NODELIST, > MAIN_CP_CB_DATA_STATE_NODELIST_NODE, > + MAIN_CP_CB_DATA_STATE_PLOAD > }; > > struct key_value_list_item { > @@ -386,6 +387,16 @@ static int main_config_parser_cb(const char *path, > switch (data->state) { > case MAIN_CP_CB_DATA_STATE_NORMAL: > break; > + case MAIN_CP_CB_DATA_STATE_PLOAD: > + if ((strcmp(path, "pload.count") == 0) || > + (strcmp(path, "pload.size") == 0)) { > + if (safe_atoi(value, &i) != 0) { > + goto atoi_error; > + } > + icmap_set_uint32(path, i); > + add_as_string = 0; > + } > + break; > case MAIN_CP_CB_DATA_STATE_QUORUM: > if ((strcmp(path, "quorum.expected_votes") == 0) || > (strcmp(path, "quorum.votes") == 0) || > @@ -696,6 +707,9 @@ static int main_config_parser_cb(const char *path, > switch (data->state) { > case MAIN_CP_CB_DATA_STATE_NORMAL: > break; > + case MAIN_CP_CB_DATA_STATE_PLOAD: > + data->state = MAIN_CP_CB_DATA_STATE_NORMAL; > + break; > case MAIN_CP_CB_DATA_STATE_INTERFACE: > /* > * Create new interface section > diff --git a/exec/pload.c b/exec/pload.c > index 8301477..a7d3e33 100644 > --- a/exec/pload.c > +++ b/exec/pload.c > @@ -3,7 +3,8 @@ > * > * All rights reserved. > * > - * Author: Steven Dake (sdake@xxxxxxxxxx) > + * Authors: Steven Dake (sdake@xxxxxxxxxx) > + * Fabio M. Di Nitto (fdinitto@xxxxxxxxxx) > * > * This software licensed under BSD license, the text of which follows: > * > @@ -34,109 +35,53 @@ > > #include <config.h> > > -#include <sys/types.h> > -#include <sys/socket.h> > -#include <sys/un.h> > -#include <sys/time.h> > -#include <sys/ioctl.h> > -#include <netinet/in.h> > -#include <sys/uio.h> > -#include <unistd.h> > -#include <fcntl.h> > -#include <stdlib.h> > -#include <stdio.h> > -#include <errno.h> > -#include <time.h> > -#include <netinet/in.h> > -#include <arpa/inet.h> > -#include <string.h> > -#include <assert.h> > - > #include <qb/qblist.h> > #include <qb/qbutil.h> > #include <qb/qbipc_common.h> > > #include <corosync/swab.h> > -#include <corosync/corotypes.h> > #include <corosync/corodefs.h> > -#include <corosync/mar_gen.h> > #include <corosync/coroapi.h> > -#include <corosync/ipc_pload.h> > -#include <corosync/list.h> > +#include <corosync/icmap.h> > #include <corosync/logsys.h> > > #include "service.h" > +#include "util.h" > > LOGSYS_DECLARE_SUBSYS ("PLOAD"); > > -enum pload_exec_message_req_types { > - MESSAGE_REQ_EXEC_PLOAD_START = 0, > - MESSAGE_REQ_EXEC_PLOAD_MCAST = 1 > -}; > - > /* > * Service Interfaces required by service_message_handler struct > */ > -static char *pload_exec_init_fn (struct corosync_api_v1 *corosync_api); > - > -static void pload_confchg_fn ( > - enum totem_configuration_type configuration_type, > - const unsigned int *member_list, size_t member_list_entries, > - const unsigned int *left_list, size_t left_list_entries, > - const unsigned int *joined_list, size_t joined_list_entries, > - const struct memb_ring_id *ring_id); > - > -static void message_handler_req_exec_pload_start (const void *msg, > - unsigned int nodeid); > - > -static void message_handler_req_exec_pload_mcast (const void *msg, > - unsigned int nodeid); > - > -static void req_exec_pload_start_endian_convert (void *msg); > - > -static void req_exec_pload_mcast_endian_convert (void *msg); > - > -static void message_handler_req_pload_start (void *conn, const void *msg); > - > -static int pload_lib_init_fn (void *conn); > - > -static int pload_lib_exit_fn (void *conn); > - > -static char buffer[1000000]; > - > -static unsigned int msgs_delivered = 0; > - > -static unsigned int msgs_wanted = 0; > - > -static unsigned int msg_size = 0; > - > -static unsigned int msg_code = 1; > - > -static unsigned int msgs_sent = 0; > +static struct corosync_api_v1 *api; > > +static char *pload_exec_init_fn (struct corosync_api_v1 *corosync_api); > > -static struct corosync_api_v1 *api; > +/* > + * on wire / network bits > + */ > +enum pload_exec_message_req_types { > + MESSAGE_REQ_EXEC_PLOAD_START = 0, > + MESSAGE_REQ_EXEC_PLOAD_MCAST = 1 > +}; > > struct req_exec_pload_start { > struct qb_ipc_request_header header; > - unsigned int msg_code; > - unsigned int msg_count; > - unsigned int msg_size; > - unsigned int time_interval; > + uint32_t msg_count; > + uint32_t msg_size; > }; > > struct req_exec_pload_mcast { > struct qb_ipc_request_header header; > - unsigned int msg_code; > }; > > -static struct corosync_lib_handler pload_lib_engine[] = > -{ > - { /* 0 */ > - .lib_handler_fn = message_handler_req_pload_start, > - .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED > - } > -}; > +static void message_handler_req_exec_pload_start (const void *msg, > + unsigned int nodeid); > +static void req_exec_pload_start_endian_convert (void *msg); > + > +static void message_handler_req_exec_pload_mcast (const void *msg, > + unsigned int nodeid); > +static void req_exec_pload_mcast_endian_convert (void *msg); > > static struct corosync_exec_handler pload_exec_engine[] = > { > @@ -150,100 +95,108 @@ static struct corosync_exec_handler pload_exec_engine[] = > } > }; > > +/* > + * internal bits and pieces > + */ > + > +/* > + * really unused buffer but we need to give something to iovec > + */ > +static char buffer[1000000]; > + > +/* > + * wanted/size come from config > + * sent/delivered track the runtime status > + */ > +static uint32_t msgs_wanted = 0; > +static uint32_t msg_size = 0; > +static uint32_t msgs_sent = 0; > +static uint32_t msgs_delivered = 0; > + > +/* > + * bit flip to track if we are running or not and avoid multiple instances > + */ > +static uint8_t pload_started = 0; > + > +/* > + * handle for scheduler > + */ > +static hdb_handle_t start_mcasting_handle; > + > +/* > + * timing/profiling > + */ > +static unsigned long long int tv1; > +static unsigned long long int tv2; > +static unsigned long long int tv_elapsed; > + > +/* > + * Service engine hooks > + */ > struct corosync_service_engine pload_service_engine = { > .name = "corosync profile loading service", > .id = PLOAD_SERVICE, > .priority = 1, > - .private_data_size = 0, > .flow_control = CS_LIB_FLOW_CONTROL_REQUIRED, > - .lib_init_fn = pload_lib_init_fn, > - .lib_exit_fn = pload_lib_exit_fn, > - .lib_engine = pload_lib_engine, > - .lib_engine_count = sizeof (pload_lib_engine) / sizeof (struct corosync_lib_handler), > .exec_engine = pload_exec_engine, > .exec_engine_count = sizeof (pload_exec_engine) / sizeof (struct corosync_exec_handler), > - .confchg_fn = pload_confchg_fn, > - .exec_init_fn = pload_exec_init_fn, > - .exec_dump_fn = NULL > + .exec_init_fn = pload_exec_init_fn > }; > > -static DECLARE_LIST_INIT (confchg_notify); > - > struct corosync_service_engine *pload_get_service_engine_ver0 (void) > { > return (&pload_service_engine); > } > > -static char *pload_exec_init_fn (struct corosync_api_v1 *corosync_api) > -{ > -#ifdef COROSYNC_SOLARIS > - logsys_subsys_init(); > -#endif > - api = corosync_api; > - > - return NULL; > -} > - > -static void pload_confchg_fn ( > - enum totem_configuration_type configuration_type, > - const unsigned int *member_list, size_t member_list_entries, > - const unsigned int *left_list, size_t left_list_entries, > - const unsigned int *joined_list, size_t joined_list_entries, > - const struct memb_ring_id *ring_id) > -{ > -} > +/* > + * internal use only functions > + */ > > -static int pload_lib_init_fn (void *conn) > -{ > - return (0); > -} > +/* > + * not all architectures / OSes define timersub in sys/time.h or time.h > + */ > > -static int pload_lib_exit_fn (void *conn) > -{ > - return (0); > -} > +#ifndef timersub > +#warning Using internal timersub definition. Check your include header files > +#define timersub(a, b, result) \ > +do { \ > + (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ > + (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ > + if ((result)->tv_usec < 0) { \ > + --(result)->tv_sec; \ > + (result)->tv_usec += 1000000; \ > + } \ > +} while (0) > +#endif /* timersub */ > > -static void message_handler_req_pload_start (void *conn, const void *msg) > +/* > + * tell all cluster nodes to start mcasting > + */ > +static void pload_send_start (uint32_t count, uint32_t size) > { > - const struct req_lib_pload_start *req_lib_pload_start = msg; > struct req_exec_pload_start req_exec_pload_start; > struct iovec iov; > > - req_exec_pload_start.header.id = > - SERVICE_ID_MAKE (PLOAD_SERVICE, MESSAGE_REQ_EXEC_PLOAD_START); > - req_exec_pload_start.msg_code = req_lib_pload_start->msg_code; > - req_exec_pload_start.msg_size = req_lib_pload_start->msg_size; > - req_exec_pload_start.msg_count = req_lib_pload_start->msg_count; > - req_exec_pload_start.time_interval = req_lib_pload_start->time_interval; > + req_exec_pload_start.header.id = SERVICE_ID_MAKE (PLOAD_SERVICE, MESSAGE_REQ_EXEC_PLOAD_START); > + req_exec_pload_start.msg_count = count; > + req_exec_pload_start.msg_size = size; > iov.iov_base = (void *)&req_exec_pload_start; > iov.iov_len = sizeof (struct req_exec_pload_start); > > - msgs_delivered = 0; > - > - msgs_wanted = 0; > - > - msgs_sent = 0; > - > api->totem_mcast (&iov, 1, TOTEM_AGREED); > } > > -static void req_exec_pload_start_endian_convert (void *msg) > -{ > -} > - > -static void req_exec_pload_mcast_endian_convert (void *msg) > -{ > -} > - > -static int send_message (const void *arg) > +/* > + * send N empty data messages of size X > + */ > +static int pload_send_message (const void *arg) > { > struct req_exec_pload_mcast req_exec_pload_mcast; > struct iovec iov[2]; > unsigned int res; > unsigned int iov_len = 1; > > - req_exec_pload_mcast.header.id = > - SERVICE_ID_MAKE (PLOAD_SERVICE, MESSAGE_REQ_EXEC_PLOAD_MCAST); > + req_exec_pload_mcast.header.id = SERVICE_ID_MAKE (PLOAD_SERVICE, MESSAGE_REQ_EXEC_PLOAD_MCAST); > req_exec_pload_mcast.header.size = sizeof (struct req_exec_pload_mcast) + msg_size; > > iov[0].iov_base = (void *)&req_exec_pload_mcast; > @@ -260,9 +213,9 @@ static int send_message (const void *arg) > break; > } else { > msgs_sent++; > - msg_code++; > } > } while (msgs_sent < msgs_wanted); > + > if (msgs_sent == msgs_wanted) { > return (0); > } else { > @@ -270,14 +223,77 @@ static int send_message (const void *arg) > } > } > > -hdb_handle_t start_mcasting_handle; > +/* > + * hook into icmap to read config at runtime > + * we do NOT start by default, ever! > + */ > +static void pload_read_config( > + int32_t event, > + const char *key_name, > + struct icmap_notify_value new_val, > + struct icmap_notify_value old_val, > + void *user_data) > +{ > + uint32_t pload_count = 1500000; > + uint32_t pload_size = 300; > + char *pload_start = NULL; > + > + icmap_get_uint32("pload.count", &pload_count); > + icmap_get_uint32("pload.size", &pload_size); > + > + if (pload_size >= sizeof(buffer)) { > + pload_size = sizeof(buffer); > + log_printf(LOGSYS_LEVEL_WARNING, "pload size limited to %u", pload_size); > + } > + > + if ((!pload_started) && > + (icmap_get_string("pload.start", &pload_start) == CS_OK)) { > + if (!strcmp(pload_start, > + "i_totally_understand_pload_will_crash_my_cluster_and_kill_corosync_on_exit")) { > + log_printf(LOGSYS_LEVEL_WARNING, "Starting pload!"); > + pload_send_start(pload_count, pload_size); > + } > + free(pload_start); > + } > +} > > -static void start_mcasting (void) > +/* > + * exec functions > + */ > +static char *pload_exec_init_fn (struct corosync_api_v1 *corosync_api) > { > - api->schedwrk_create ( > - &start_mcasting_handle, > - send_message, > - &start_mcasting_handle); > + icmap_track_t pload_track = NULL; > + > +#ifdef COROSYNC_SOLARIS > + logsys_subsys_init(); > +#endif > + > + api = corosync_api; > + > + /* > + * track changes to pload config and start only on demand > + */ > + if (icmap_track_add("pload.", > + ICMAP_TRACK_ADD | ICMAP_TRACK_DELETE | ICMAP_TRACK_MODIFY | ICMAP_TRACK_PREFIX, > + pload_read_config, > + NULL, > + &pload_track) != CS_OK) { > + return (char *)"Unable to setup pload config tracking!\n"; > + } > + > + return NULL; > +} > + > +/* > + * network messages/onwire handlers > + */ > + > +static void req_exec_pload_start_endian_convert (void *msg) > +{ > + struct req_exec_pload_start *req_exec_pload_start = msg; > + > + req_exec_pload_start->msg_count = swab32(req_exec_pload_start->msg_count); > + req_exec_pload_start->msg_size = swab32(req_exec_pload_start->msg_size); > } > > static void message_handler_req_exec_pload_start ( > @@ -286,37 +302,34 @@ static void message_handler_req_exec_pload_start ( > { > const struct req_exec_pload_start *req_exec_pload_start = msg; > > + /* > + * don't start multiple instances > + */ > + if (pload_started) { > + return; > + } > + > + pload_started = 1; > + > msgs_wanted = req_exec_pload_start->msg_count; > msg_size = req_exec_pload_start->msg_size; > - msg_code = req_exec_pload_start->msg_code; > > - start_mcasting (); > + api->schedwrk_create ( > + &start_mcasting_handle, > + pload_send_message, > + &start_mcasting_handle); > } > -#ifndef timersub > -#define timersub(a, b, result) \ > -do { \ > - (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ > - (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ > - if ((result)->tv_usec < 0) { \ > - --(result)->tv_sec; \ > - (result)->tv_usec += 1000000; \ > - } \ > -} while (0) > -#endif /* timersub */ > > -unsigned long long int tv1; > -unsigned long long int tv2; > -unsigned long long int tv_elapsed; > -int last_msg_no = 0; > +static void req_exec_pload_mcast_endian_convert (void *msg) > +{ > +} > > static void message_handler_req_exec_pload_mcast ( > const void *msg, > unsigned int nodeid) > { > - const struct req_exec_pload_mcast *pload_mcast = msg; > char log_buffer[1024]; > > - last_msg_no = pload_mcast->msg_code; > if (msgs_delivered == 0) { > tv1 = qb_util_nano_current_get (); > } > @@ -332,5 +345,7 @@ static void message_handler_req_exec_pload_mcast ( > (((float)msgs_delivered) * ((float)msg_size) / > (tv_elapsed / 1000000000.0)) / (1024.0 * 1024.0)); > log_printf (LOGSYS_LEVEL_NOTICE, "%s", log_buffer); > + log_printf (LOGSYS_LEVEL_WARNING, "Stopping corosync the hard way"); > + exit(COROSYNC_DONE_PLOAD); > } > } > diff --git a/exec/util.h b/exec/util.h > index a6e3593..faf038f 100644 > --- a/exec/util.h > +++ b/exec/util.h > @@ -56,7 +56,8 @@ enum e_corosync_done { > COROSYNC_DONE_AQUIRE_LOCK = 17, > COROSYNC_DONE_ALREADY_RUNNING = 18, > COROSYNC_DONE_STD_TO_NULL_REDIR = 19, > - COROSYNC_DONE_SERVICE_ENGINE_INIT = 20 > + COROSYNC_DONE_SERVICE_ENGINE_INIT = 20, > + COROSYNC_DONE_PLOAD = 99 > }; > > > diff --git a/include/Makefile.am b/include/Makefile.am > index ccd594f..e15d36c 100644 > --- a/include/Makefile.am > +++ b/include/Makefile.am > @@ -34,8 +34,8 @@ MAINTAINERCLEANFILES = Makefile.in corosync/config.h.in > CS_H = hdb.h cpg.h cfg.h evs.h corodefs.h \ > corotypes.h quorum.h votequorum.h sam.h cmap.h > > -CS_INTERNAL_H = ipc_cfg.h ipc_cpg.h ipc_evs.h ipc_pload.h ipc_quorum.h \ > - pload.h quorum.h sq.h ipc_votequorum.h ipc_cmap.h \ > +CS_INTERNAL_H = ipc_cfg.h ipc_cpg.h ipc_evs.h ipc_quorum.h \ > + quorum.h sq.h ipc_votequorum.h ipc_cmap.h \ > logsys.h coroapi.h icmap.h mar_gen.h list.h swab.h cs_config.h > > TOTEM_H = totem.h totemip.h totempg.h > diff --git a/include/corosync/ipc_pload.h b/include/corosync/ipc_pload.h > deleted file mode 100644 > index e815584..0000000 > --- a/include/corosync/ipc_pload.h > +++ /dev/null > @@ -1,70 +0,0 @@ > -/* > - * Copyright (c) 2008-2011 Red Hat, Inc. > - * > - * All rights reserved. > - * > - * Author: Steven Dake (sdake@xxxxxxxxxx) > - * > - * This software licensed under BSD license, the text of which follows: > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions are met: > - * > - * - Redistributions of source code must retain the above copyright notice, > - * this list of conditions and the following disclaimer. > - * - Redistributions in binary form must reproduce the above copyright notice, > - * this list of conditions and the following disclaimer in the documentation > - * and/or other materials provided with the distribution. > - * - Neither the name of the MontaVista Software, Inc. nor the names of its > - * contributors may be used to endorse or promote products derived from this > - * software without specific prior written permission. > - * > - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > - * THE POSSIBILITY OF SUCH DAMAGE. > - */ > -#ifndef IPC_PLOAD_H_DEFINED > -#define IPC_PLOAD_H_DEFINED > - > -#include <corosync/corotypes.h> > -#include <corosync/mar_gen.h> > - > -enum req_lib_evs_types { > - MESSAGE_REQ_PLOAD_START = 0, > -}; > - > -enum res_lib_evs_types { > - MESSAGE_RES_PLOAD_START = 0, > -}; > - > -struct res_lib_pload_start { > - struct qb_ipc_response_header header; > - unsigned int dataset[1024]; > -}; > - > -struct res_lib_pload_mcast { > - struct qb_ipc_response_header header; > -}; > - > -struct req_lib_pload_start { > - struct qb_ipc_request_header header; > - unsigned int msg_code; > - unsigned int msg_size; > - unsigned int msg_count; > - unsigned int time_interval; > -}; > - > -struct req_lib_pload_mcast { > - struct qb_ipc_request_header header; > - unsigned int code; > -}; > - > -#endif /* IPC_PLOAD_H_DEFINED */ > diff --git a/include/corosync/pload.h b/include/corosync/pload.h > deleted file mode 100644 > index 8109d8c..0000000 > --- a/include/corosync/pload.h > +++ /dev/null > @@ -1,110 +0,0 @@ > -/* > - * Copyright (c) 2008-2011 Red Hat, Inc. > - * > - * All rights reserved. > - * > - * Author: Steven Dake (sdake@xxxxxxxxxx) > - * > - * This software licensed under BSD license, the text of which follows: > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions are met: > - * > - * - Redistributions of source code must retain the above copyright notice, > - * this list of conditions and the following disclaimer. > - * - Redistributions in binary form must reproduce the above copyright notice, > - * this list of conditions and the following disclaimer in the documentation > - * and/or other materials provided with the distribution. > - * - Neither the name of the MontaVista Software, Inc. nor the names of its > - * contributors may be used to endorse or promote products derived from this > - * software without specific prior written permission. > - * > - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > - * THE POSSIBILITY OF SUCH DAMAGE. > - */ > -#ifndef COROSYNC_PLOAD_H_DEFINED > -#define COROSYNC_PLOAD_H_DEFINED > - > -#include <sys/types.h> > -#include <netinet/in.h> > - > -#ifdef __cplusplus > -extern "C" { > -#endif > - > -/** > - * @defgroup corosync Other API services provided by corosync > - */ > -/** > - * @addtogroup pload_corosync > - * > - * @{ > - */ > - > -typedef uint64_t pload_handle_t; > - > -typedef enum { > - PLOAD_OK = 1, > - PLOAD_ERR_LIBRARY = 2, > - PLOAD_ERR_TIMEOUT = 5, > - PLOAD_ERR_TRY_AGAIN = 6, > - PLOAD_ERR_INVALID_PARAM = 7, > - PLOAD_ERR_NO_MEMORY = 8, > - PLOAD_ERR_BAD_HANDLE = 9, > - PLOAD_ERR_ACCESS = 11, > - PLOAD_ERR_NOT_EXIST = 12, > - PLOAD_ERR_EXIST = 14, > - PLOAD_ERR_NOT_SUPPORTED = 20, > - PLOAD_ERR_SECURITY = 29, > - PLOAD_ERR_TOO_MANY_GROUPS=30 > -} pload_error_t; > - > -typedef struct { > - int callback; > -} pload_callbacks_t; > - > -/** @} */ > - > -/** > - * Create a new pload connection > - */ > -pload_error_t pload_initialize ( > - pload_handle_t *handle, > - pload_callbacks_t *callbacks); > - > -/** > - * Close the pload handle > - */ > -pload_error_t pload_finalize ( > - pload_handle_t handle); > - > -/** > - * Get a file descriptor on which to poll. > - * > - * @note pload_handle_t is NOT a file descriptor and may not be used directly. > - */ > -pload_error_t pload_fd_get ( > - pload_handle_t handle, > - int *fd); > - > -unsigned int pload_start ( > - pload_handle_t handle, > - unsigned int code, > - unsigned int msg_count, > - unsigned int msg_size); > - > - > -#ifdef __cplusplus > -} > -#endif > - > -#endif /* COROSYNC_PLOAD_H_DEFINED */ > diff --git a/lib/Makefile.am b/lib/Makefile.am > index 6ded330..58c7b78 100644 > --- a/lib/Makefile.am > +++ b/lib/Makefile.am > @@ -47,13 +47,12 @@ AM_LDFLAGS = -lpthread -L../common_lib -lcorosync_common > INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include > > lib_LIBRARIES = libcpg.a libquorum.a libevs.a libcfg.a \ > - libvotequorum.a libpload.a libsam.a libcmap.a > + libvotequorum.a libsam.a libcmap.a > SHARED_LIBS_SO = $(lib_LIBRARIES:%.a=%.so) > > libcpg_a_SOURCES = cpg.c > libcfg_a_SOURCES = cfg.c > libevs_a_SOURCES = evs.c > -libpload_a_SOURCES = pload.c > libquorum_a_SOURCES = quorum.c > libvotequorum_a_SOURCES = votequorum.c > libcmap_a_SOURCES = cmap.c > @@ -63,7 +62,7 @@ libsam_a_SOURCES = sam.c > noinst_HEADERS = util.h \ > libcfg.versions \ > libcpg.versions \ > - libevs.versions libpload.versions \ > + libevs.versions \ > libquorum.versions libvotequorum.versions \ > libsam.versions libcmap.versions > > diff --git a/lib/libpload.versions b/lib/libpload.versions > deleted file mode 100644 > index b5cf01a..0000000 > --- a/lib/libpload.versions > +++ /dev/null > @@ -1,6 +0,0 @@ > -# Version and symbol export for libSaClm.so > - > -COROSYNC_PLOAD_1.0 { > - global: > - pload_start; > -}; > diff --git a/lib/libpload.verso b/lib/libpload.verso > deleted file mode 100644 > index fcdb2e1..0000000 > --- a/lib/libpload.verso > +++ /dev/null > @@ -1 +0,0 @@ > -4.0.0 > diff --git a/lib/pload.c b/lib/pload.c > deleted file mode 100644 > index 6cb5f44..0000000 > --- a/lib/pload.c > +++ /dev/null > @@ -1,202 +0,0 @@ > -/* > - * Copyright (c) 2008-2012 Red Hat, Inc. > - * > - * All rights reserved. > - * > - * Author: Steven Dake (sdake@xxxxxxxxxx) > - * > - * This software licensed under BSD license, the text of which follows: > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions are met: > - * > - * - Redistributions of source code must retain the above copyright notice, > - * this list of conditions and the following disclaimer. > - * - Redistributions in binary form must reproduce the above copyright notice, > - * this list of conditions and the following disclaimer in the documentation > - * and/or other materials provided with the distribution. > - * - Neither the name of the MontaVista Software, Inc. nor the names of its > - * contributors may be used to endorse or promote products derived from this > - * software without specific prior written permission. > - * > - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > - * THE POSSIBILITY OF SUCH DAMAGE. > - */ > - > -#include <config.h> > - > -#include <stdlib.h> > -#include <string.h> > -#include <unistd.h> > -#include <sys/types.h> > -#include <sys/socket.h> > -#include <errno.h> > - > -#include <qb/qbipcc.h> > - > -#include <corosync/corotypes.h> > -#include <corosync/corodefs.h> > -#include <corosync/hdb.h> > - > -#include <corosync/pload.h> > -#include <corosync/ipc_pload.h> > - > -#include "util.h" > - > -struct pload_inst { > - qb_ipcc_connection_t *c; > - unsigned int finalize; > -}; > - > -DECLARE_HDB_DATABASE(pload_handle_t_db,NULL); > - > -/** > - * @defgroup pload_corosync The extended virtual synchrony passthrough API > - * @ingroup corosync > - * > - * @{ > - */ > -/** > - * test > - * @param handle The handle of pload initialize > - * @param callbacks The callbacks for pload_initialize > - * @returns PLOAD_OK > - */ > -unsigned int pload_initialize ( > - pload_handle_t *handle, > - pload_callbacks_t *callbacks) > -{ > - cs_error_t error; > - struct pload_inst *pload_inst; > - > - error = hdb_error_to_cs(hdb_handle_create (&pload_handle_t_db, sizeof (struct pload_inst), handle)); > - if (error != CS_OK) { > - goto error_no_destroy; > - } > - > - error = hdb_error_to_cs(hdb_handle_get (&pload_handle_t_db, *handle, (void *)&pload_inst)); > - if (error != CS_OK) { > - goto error_destroy; > - } > - > - pload_inst->c = qb_ipcc_connect ("pload", IPC_REQUEST_SIZE); > - if (pload_inst->c == NULL) { > - error = qb_to_cs_error(-errno); > - goto error_put_destroy; > - } > - > - (void)hdb_handle_put (&pload_handle_t_db, *handle); > - > - return (CS_OK); > - > -error_put_destroy: > - (void)hdb_handle_put (&pload_handle_t_db, *handle); > -error_destroy: > - (void)hdb_handle_destroy (&pload_handle_t_db, *handle); > -error_no_destroy: > - return (error); > -} > - > -unsigned int pload_finalize ( > - pload_handle_t handle) > -{ > - struct pload_inst *pload_inst; > - cs_error_t error; > - > - error = hdb_error_to_cs (hdb_handle_get (&pload_handle_t_db, handle, (void *)&pload_inst)); > - if (error != CS_OK) { > - return (error); > - } > - > - /* > - * Another thread has already started finalizing > - */ > - if (pload_inst->finalize) { > - (void)hdb_handle_put (&pload_handle_t_db, handle); > - return (PLOAD_ERR_BAD_HANDLE); > - } > - > - pload_inst->finalize = 1; > - > - qb_ipcc_disconnect(pload_inst->c); > - > - (void)hdb_handle_destroy (&pload_handle_t_db, handle); > - > - (void)hdb_handle_put (&pload_handle_t_db, handle); > - > - return (PLOAD_OK); > -} > - > -unsigned int pload_fd_get ( > - pload_handle_t handle, > - int *fd) > -{ > - cs_error_t error; > - struct pload_inst *pload_inst; > - > - error = hdb_error_to_cs(hdb_handle_get (&pload_handle_t_db, handle, (void *)&pload_inst)); > - if (error != CS_OK) { > - return (error); > - } > - > - qb_ipcc_fd_get (pload_inst->c, fd); > - > - (void)hdb_handle_put (&pload_handle_t_db, handle); > - > - return (CS_OK); > -} > - > -unsigned int pload_start ( > - pload_handle_t handle, > - unsigned int code, > - unsigned int msg_count, > - unsigned int msg_size) > -{ > - unsigned int error; > - struct pload_inst *pload_inst; > - struct iovec iov; > - struct req_lib_pload_start req_lib_pload_start; > - struct res_lib_pload_start res_lib_pload_start; > - > - error = hdb_error_to_cs(hdb_handle_get (&pload_handle_t_db, handle, (void *)&pload_inst)); > - if (error != CS_OK) { > - return (error); > - } > - > - req_lib_pload_start.header.size = sizeof (struct req_lib_pload_start); > - req_lib_pload_start.header.id = MESSAGE_REQ_PLOAD_START; > - req_lib_pload_start.msg_code = code; > - req_lib_pload_start.msg_count = msg_count; > - req_lib_pload_start.msg_size = msg_size; > - > - iov.iov_base = (char *)&req_lib_pload_start; > - iov.iov_len = sizeof (struct req_lib_pload_start); > - > - error = qb_to_cs_error(qb_ipcc_sendv_recv(pload_inst->c, > - &iov, > - 1, > - &res_lib_pload_start, > - sizeof (struct res_lib_pload_start), CS_IPC_TIMEOUT_MS)); > - > - if (error != CS_OK) { > - goto error_exit; > - } > - > - error = res_lib_pload_start.header.error; > - > -error_exit: > - (void)hdb_handle_put (&pload_handle_t_db, handle); > - > - return (error); > -} > - > -/** @} */ > diff --git a/man/Makefile.am b/man/Makefile.am > index 69c536c..54b1e19 100644 > --- a/man/Makefile.am > +++ b/man/Makefile.am > @@ -135,7 +135,6 @@ dist_man_MANS = corosync.conf.5 \ > corosync-cfgtool.8 \ > corosync-cpgtool.8 \ > corosync-fplay.8 \ > - corosync-pload.8 \ > corosync-notifyd.8 \ > corosync-quorumtool.8 \ > corosync_overview.8 \ > diff --git a/man/corosync-pload.8 b/man/corosync-pload.8 > deleted file mode 100644 > index b04fff4..0000000 > --- a/man/corosync-pload.8 > +++ /dev/null > @@ -1,69 +0,0 @@ > -.\"/* > -.\" * Copyright (C) 2010 Red Hat, Inc. > -.\" * > -.\" * All rights reserved. > -.\" * > -.\" * Author: Angus Salkeld <asalkeld@xxxxxxxxxx> > -.\" * > -.\" * This software licensed under BSD license, the text of which follows: > -.\" * > -.\" * Redistribution and use in source and binary forms, with or without > -.\" * modification, are permitted provided that the following conditions are met: > -.\" * > -.\" * - Redistributions of source code must retain the above copyright notice, > -.\" * this list of conditions and the following disclaimer. > -.\" * - Redistributions in binary form must reproduce the above copyright notice, > -.\" * this list of conditions and the following disclaimer in the documentation > -.\" * and/or other materials provided with the distribution. > -.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its > -.\" * contributors may be used to endorse or promote products derived from this > -.\" * software without specific prior written permission. > -.\" * > -.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > -.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > -.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > -.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > -.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > -.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > -.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > -.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > -.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > -.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > -.\" * THE POSSIBILITY OF SUCH DAMAGE. > -.\" */ > -.TH COROSYNC-PLOAD 8 2010-05-30 > -.SH NAME > -corosync-pload \- Start payload test. > -.SH SYNOPSIS > -.B "corosync-pload" > -.SH DESCRIPTION > -.B corosync-pload > -starts the pload service. > -This is used as a test tool to generate traffic. > -All nodes will begin transmitting messages and they will stop when > -1500000 messages have been received per node. > -.PP > -To view the progress of this execute: > -.PP > -$ corosync-cmapctl runtime.services.pload. > -.br > -runtime.services.pload.service_id=13 > -.br > -runtime.services.pload.0.tx=3 > -.br > -runtime.services.pload.0.rx=2 > -.br > -runtime.services.pload.1.tx=2478788 > -.br > -runtime.services.pload.1.rx=4467870 > -.PP > -At the end of the run a log message will be written showing the number of messages written > -and the time that this took. > -.PP > -corosync[4931]: [PLOAD ] 1500000 Writes 300 bytes per write 30.838 seconds runtime, 48640.968 TP/S, 13.916 MB/S. > -.TP > -.SH SEE ALSO > -.BR corosync-cmapctl (8) > -.SH AUTHOR > -Angus Salkeld > -.PP > diff --git a/man/index.html b/man/index.html > index b067b71..793d511 100644 > --- a/man/index.html > +++ b/man/index.html > @@ -67,10 +67,6 @@ > Description of corosync-cmapctl tool. > <br> > > - <a href="corosync-pload.8.html">corosync-pload(8)</a>: > - Description of corosync-pload tool. > - <br> > - > <a href="corosync-quorumtool.8.html">corosync-quorumtool(8)</a>: > Description of corosync-quorumtool tool. > <br> > diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am > index 50691ba..ac2f974 100644 > --- a/pkgconfig/Makefile.am > +++ b/pkgconfig/Makefile.am > @@ -32,7 +32,7 @@ MAINTAINERCLEANFILES = Makefile.in > > EXTRA_DIST = libtemplate.pc.in corosync.pc.in > > -LIBS = cfg cpg evs pload quorum \ > +LIBS = cfg cpg evs quorum \ > totem_pg votequorum sam cmap corosync_common > > target_LIBS = $(LIBS:%=lib%.pc) > diff --git a/test/Makefile.am b/test/Makefile.am > index af19ab2..647aad2 100644 > --- a/test/Makefile.am > +++ b/test/Makefile.am > @@ -33,11 +33,15 @@ > MAINTAINERCLEANFILES = Makefile.in > INCLUDES = -I$(top_builddir)/include/corosync -I$(top_srcdir)/include > > +EXTRA_DIST = ploadstart.sh > + > noinst_PROGRAMS = testevs evsbench evsverify cpgverify testcpg testcpg2 cpgbench \ > testquorum testvotequorum1 testvotequorum2 \ > stress_cpgfdget stress_cpgcontext cpgbound testsam \ > testcpgzc cpgbenchzc testzcgc stress_cpgzc > > +noinst_SCRIPTS = ploadstart > + > COMMON_OPTS = -L../lib -L../common_lib -Wl,-rpath,../common_lib > > testevs_LDADD = -levs $(LIBQB_LIBS) > @@ -77,6 +81,10 @@ cpgbenchzc_LDFLAGS = $(COMMON_OPTS) > testsam_LDADD = -lsam -lcmap -lquorum $(LIBQB_LIBS) > testsam_LDFLAGS = $(COMMON_OPTS) > > +ploadstart: ploadstart.sh > + cp $^ $@ > + chmod 755 $@ > + > LINT_FILES1:=$(filter-out sa_error.c, $(wildcard *.c)) > LINT_FILES2:=$(filter-out testevsth.c, $(LINT_FILES1)) > LINT_FILES:=$(filter-out testparse.c, $(LINT_FILES2)) > @@ -85,4 +93,4 @@ lint: > -for f in $(LINT_FILES) ; do echo Splint $$f ; splint $(INCLUDES) $(LINT_FLAGS) $(CFLAGS) $$f ; done > > clean-local: > - rm -f fdata > + rm -f fdata ploadstart > diff --git a/test/ploadstart.sh b/test/ploadstart.sh > new file mode 100644 > index 0000000..7bd7c9d > --- /dev/null > +++ b/test/ploadstart.sh > @@ -0,0 +1,60 @@ > +#!/bin/bash > + > +set -e > + > +msg_count="" > +msg_size="" > + > +usage() { > + echo "ploadstart [options]" > + echo "" > + echo "Options:" > + echo " -c msg_count Number of messages to send (max UINT32_T default 1500000)" > + echo " -s msg_size Size of messages in bytes (max 1000000 default 300)" > + echo " -h display this help" > +} > + > +while getopts "hs:c:" optflag; do > + case "$optflag" in > + h) > + usage > + exit 0 > + ;; > + c) > + msg_count="$OPTARG" > + ;; > + s) > + msg_size="$OPTARG" > + ;; > + \?|:) > + usage > + exit 1 > + ;; > + esac > +done > + > +[ -n "$msg_count" ] && corosync-cmapctl -s pload.count u32 $msg_count > +[ -n "$msg_size" ] && corosync-cmapctl -s pload.size u32 $msg_size > + > +echo "***** WARNING *****" > +echo "" > +echo "Running pload test will kill your cluster and all corosync daemons will exit" > +echo "at the end of the load test" > +echo "" > +echo "***** END OF WARNING *****" > +echo "" > +echo "YOU HAVE BEEN WARNED" > +echo "" > +echo "If you agree, and want to proceed, please type:" > +echo "Yes, I fully understand the risks of what I am doing" > +echo "" > +read -p "type here: " ans > + > +[ "$ans" = "Yes, I fully understand the risks of what I am doing" ] || { > + echo "Wise choice.. or you simply didn't type it right" > + exit 0 > +} > + > +corosync-cmapctl -s pload.start str i_totally_understand_pload_will_crash_my_cluster_and_kill_corosync_on_exit > + > +echo "PLOAD started, please see corosync.log for final results" > diff --git a/tools/.gitignore b/tools/.gitignore > index 2d9fa0f..c63290e 100644 > --- a/tools/.gitignore > +++ b/tools/.gitignore > @@ -2,7 +2,6 @@ corosync-cfgtool > corosync-cpgtool > corosync-fplay > corosync-keygen > -corosync-pload > corosync-quorumtool > corosync-notifyd > corosync-cmapctl > diff --git a/tools/Makefile.am b/tools/Makefile.am > index ed24725..5cd738b 100644 > --- a/tools/Makefile.am > +++ b/tools/Makefile.am > @@ -35,7 +35,7 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ > > sbin_PROGRAMS = corosync-fplay corosync-cfgtool \ > corosync-keygen \ > - corosync-pload corosync-cpgtool corosync-quorumtool \ > + corosync-cpgtool corosync-quorumtool \ > corosync-notifyd corosync-cmapctl > > bin_SCRIPTS = corosync-blackbox > @@ -56,9 +56,6 @@ corosync_cmapctl_LDADD = -lcorosync_common -lcmap $(LIBQB_LIBS) > > corosync_fplay_LDADD = $(LIBQB_LIBS) > > -corosync_pload_LDFLAGS = $(COMMON_OPTS) > -corosync_pload_LDADD = -lpload $(LIBQB_LIBS) > - > corosync_cfgtool_LDFLAGS= $(COMMON_OPTS) > corosync_cfgtool_LDADD = -lcfg $(LIBQB_LIBS) > > diff --git a/tools/corosync-pload.c b/tools/corosync-pload.c > deleted file mode 100644 > index 0f2f646..0000000 > --- a/tools/corosync-pload.c > +++ /dev/null > @@ -1,79 +0,0 @@ > -/* > - * Copyright (c) 2008-2011 Red Hat, Inc. > - * > - * All rights reserved. > - * > - * Author: Steven Dake (sdake@xxxxxxxxxx) > - * > - * This software licensed under BSD license, the text of which follows: > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions are met: > - * > - * - Redistributions of source code must retain the above copyright notice, > - * this list of conditions and the following disclaimer. > - * - Redistributions in binary form must reproduce the above copyright notice, > - * this list of conditions and the following disclaimer in the documentation > - * and/or other materials provided with the distribution. > - * - Neither the name of the MontaVista Software, Inc. nor the names of its > - * contributors may be used to endorse or promote products derived from this > - * software without specific prior written permission. > - * > - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > - * THE POSSIBILITY OF SUCH DAMAGE. > - */ > - > -#include <config.h> > - > -#include <stdio.h> > -#include <stdlib.h> > -#include <unistd.h> > -#include <errno.h> > -#include <unistd.h> > -#include <time.h> > -#include <sys/time.h> > -#include <sys/types.h> > -#include <sys/socket.h> > -#include <sys/select.h> > -#include <sys/un.h> > -#include <sys/socket.h> > -#include <netinet/in.h> > -#include <arpa/inet.h> > - > -#include <corosync/corotypes.h> > -#include <corosync/pload.h> > - > -#ifndef timersub > -#define timersub(a, b, result) \ > -do { \ > - (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ > - (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ > - if ((result)->tv_usec < 0) { \ > - --(result)->tv_sec; \ > - (result)->tv_usec += 1000000; \ > - } \ > -} while (0) > -#endif /* timersub */ > - > -int main (void) { > - pload_error_t result; > - pload_handle_t handle; > - > - result = pload_initialize (&handle, NULL); > - printf ("Init result %d\n", result); > - result = pload_start ( > - handle, > - 0, /* code */ > - 1500000, /* count */ > - 300); /* size */ > - return (0); > -} _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss