From b60d0c8781b920fad52ac3fb63264ea538cf226a Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 11 May 2012 10:33:13 -0700 Subject: [PATCH] librdmacm/rstream: Set rsocket nonblocking for base tests The base set of rstream tests want nonblocking rsockets, but don't actually set the rsocket to nonblocking. It instead relies on the MSG_DONTWAIT flag. Make the code match the expected behavior and set the rsocket to nonblocking and make nonblocking the default. Provide a test option to switch it back to blocking mode. We keep the existing nonblocking test option for compatibility. Signed-off-by: Sean Hefty --- examples/rstream.c | 14 +++++++++----- man/rstream.1 | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/examples/rstream.c b/examples/rstream.c index 8aa089d7..a52a262c 100644 --- a/examples/rstream.c +++ b/examples/rstream.c @@ -57,7 +57,7 @@ static int use_rs = 1; static int use_async; static int verify; static int flags; -static int no_delay; +static int no_delay = 1; static int custom; static int iterations = 1; static int transfer_size = 1000; @@ -151,8 +151,6 @@ static void init_latency_test(int size) { size_str(test_name, size); sprintf(test_name, "%s_lat", test_name); - no_delay = 1; - flags |= MSG_DONTWAIT; transfer_count = 1; transfer_size = size; iterations = size_to_count(transfer_size); @@ -162,8 +160,6 @@ static void init_bandwidth_test(int size) { size_str(test_name, size); sprintf(test_name, "%s_bw", test_name); - no_delay = 1; - flags |= MSG_DONTWAIT; iterations = 1; transfer_size = size; transfer_count = size_to_count(transfer_size); @@ -490,6 +486,10 @@ static int set_test_opt(char *optarg) case 'a': use_async = 1; break; + case 'b': + flags &= ~MSG_DONTWAIT; + no_delay = 0; + break; case 'n': flags |= MSG_DONTWAIT; no_delay = 1; @@ -505,6 +505,9 @@ static int set_test_opt(char *optarg) use_rs = 0; } else if (!strncasecmp("async", optarg, 5)) { use_async = 1; + } else if (!strncasecmp("block", optarg, 5)) { + flags &= ~MSG_DONTWAIT; + no_delay = 0; } else if (!strncasecmp("nonblock", optarg, 8)) { flags |= MSG_DONTWAIT; no_delay = 1; @@ -559,6 +562,7 @@ int main(int argc, char **argv) printf("\t[-T test_option]\n"); printf("\t s|sockets - use standard tcp/ip sockets\n"); printf("\t a|async - asynchronous operation\n"); + printf("\t b|blocking - use blocking calls\n"); printf("\t n|nonblocking - use nonblocking calls\n"); printf("\t v|verify - verify data\n"); exit(1); diff --git a/man/rstream.1 b/man/rstream.1 index 701db3ad..58bd7e3c 100644 --- a/man/rstream.1 +++ b/man/rstream.1 @@ -42,6 +42,8 @@ s | socket - uses standard socket calls to transfer data .P a | async - uses asynchronous operation (e.g. select / poll) .P +b | blocking - uses blocking calls +.P n | nonblocking - uses non-blocking calls .P v | verify - verifies data transfers -- 2.46.0