+lst_get_bulk_param(int argc, char **argv, lst_test_bulk_param_t *bulk)
+{
+ char *tok = NULL;
+ char *end = NULL;
+ int rc = 0;
+ int i = 0;
+
+ bulk->blk_size = 4096;
+ bulk->blk_opc = LST_BRW_READ;
+ bulk->blk_flags = LST_BRW_CHECK_NONE;
+
+ while (i < argc) {
+ if (strcasestr(argv[i], "check=") == argv[i] ||
+ strcasestr(argv[i], "c=") == argv[i]) {
+ tok = strchr(argv[i], '=') + 1;
+
+ if (strcasecmp(tok, "full") == 0) {
+ bulk->blk_flags = LST_BRW_CHECK_FULL;
+ } else if (strcasecmp(tok, "simple") == 0) {
+ bulk->blk_flags = LST_BRW_CHECK_SIMPLE;
+ } else {
+ fprintf(stderr, "Unknow flag %s\n", tok);
+ return -1;
+ }
+
+ } else if (strcasestr(argv[i], "size=") == argv[i] ||
+ strcasestr(argv[i], "s=") == argv[i]) {
+ tok = strchr(argv[i], '=') + 1;
+
+ bulk->blk_size = strtol(tok, &end, 0);
+ if (bulk->blk_size <= 0) {
+ fprintf(stderr, "Invalid size %s\n", tok);
+ return -1;
+ }
+
+ if (end == NULL)
+ return 0;
+
+ if (*end == 'k' || *end == 'K')
+ bulk->blk_size *= 1024;
+ else if (*end == 'm' || *end == 'M')
+ bulk->blk_size *= 1024 * 1024;
+
+ if (bulk->blk_size > CFS_PAGE_SIZE * LNET_MAX_IOV) {
+ fprintf(stderr, "Size exceed limitation: %d bytes\n",
+ bulk->blk_size);
+ return -1;
+ }
+
+ } else if (strcasecmp(argv[i], "read") == 0 ||
+ strcasecmp(argv[i], "r") == 0) {
+ bulk->blk_opc = LST_BRW_READ;
+
+ } else if (strcasecmp(argv[i], "write") == 0 ||
+ strcasecmp(argv[i], "w") == 0) {
+ bulk->blk_opc = LST_BRW_WRITE;
+
+ } else {
+ fprintf(stderr, "Unknow parameter: %s\n", argv[i]);
+ return -1;
+ }
+
+ i++;
+ }
+
+ return rc;
+}
+
+int