diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2022-01-14 13:50:19 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2022-01-14 13:50:19 +0900 |
commit | 9f1483fb0bea7defd7bdcfedb8a5329171f6d1d9 (patch) | |
tree | 05458ff3f25dc8ae000f9501fdb3fd4cb34ab636 /mpathpersist | |
parent | 11d7ecbf0b8d9e0b8d9aa593265353cfc150cb88 (diff) | |
download | multipath-tools-9f1483fb0bea7defd7bdcfedb8a5329171f6d1d9.tar.gz multipath-tools-9f1483fb0bea7defd7bdcfedb8a5329171f6d1d9.tar.bz2 multipath-tools-9f1483fb0bea7defd7bdcfedb8a5329171f6d1d9.zip |
Imported Upstream version 0.8.3upstream/0.8.3
Diffstat (limited to 'mpathpersist')
-rw-r--r-- | mpathpersist/main.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/mpathpersist/main.c b/mpathpersist/main.c index 5ad06a9..278b8d5 100644 --- a/mpathpersist/main.c +++ b/mpathpersist/main.c @@ -155,7 +155,8 @@ static int do_batch_file(const char *batch_fn) static int handle_args(int argc, char * argv[], int nline) { - int fd, c; + int c; + int fd = -1; const char *device_name = NULL; int num_prin_sa = 0; int num_prout_sa = 0; @@ -213,7 +214,8 @@ static int handle_args(int argc, char * argv[], int nline) if (nline == 0 && 1 != sscanf (optarg, "%d", &loglevel)) { fprintf (stderr, "bad argument to '--verbose'\n"); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } break; @@ -228,6 +230,7 @@ static int handle_args(int argc, char * argv[], int nline) case 'h': usage (); + free(batch_fn); return 0; case 'H': @@ -254,7 +257,8 @@ static int handle_args(int argc, char * argv[], int nline) if (1 != sscanf (optarg, "%" SCNx64 "", ¶m_rk)) { fprintf (stderr, "bad argument to '--param-rk'\n"); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } ++num_prout_param; break; @@ -263,7 +267,8 @@ static int handle_args(int argc, char * argv[], int nline) if (1 != sscanf (optarg, "%" SCNx64 "", ¶m_sark)) { fprintf (stderr, "bad argument to '--param-sark'\n"); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } ++num_prout_param; break; @@ -282,7 +287,8 @@ static int handle_args(int argc, char * argv[], int nline) if (1 != sscanf (optarg, "%x", &prout_type)) { fprintf (stderr, "bad argument to '--prout-type'\n"); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } ++num_prout_param; break; @@ -330,7 +336,8 @@ static int handle_args(int argc, char * argv[], int nline) case 'X': if (0 != construct_transportid(optarg, transportids, num_transport)) { fprintf(stderr, "bad argument to '--transport-id'\n"); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } ++num_transport; @@ -339,11 +346,13 @@ static int handle_args(int argc, char * argv[], int nline) case 'l': if (1 != sscanf(optarg, "%u", &mpath_mx_alloc_len)) { fprintf(stderr, "bad argument to '--alloc-length'\n"); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } else if (MPATH_MAX_PARAM_LEN < mpath_mx_alloc_len) { fprintf(stderr, "'--alloc-length' argument exceeds maximum" " limit(%d)\n", MPATH_MAX_PARAM_LEN); - return MPATH_PR_SYNTAX_ERROR; + ret = MPATH_PR_SYNTAX_ERROR; + goto out; } break; @@ -420,12 +429,14 @@ static int handle_args(int argc, char * argv[], int nline) fprintf (stderr, " No service action given for Persistent Reserve IN\n"); ret = MPATH_PR_SYNTAX_ERROR; + goto out; } else if (num_prin_sa > 1) { fprintf (stderr, " Too many service actions given; choose " "one only\n"); ret = MPATH_PR_SYNTAX_ERROR; + goto out; } } else @@ -481,14 +492,14 @@ static int handle_args(int argc, char * argv[], int nline) { fprintf (stderr, "failed to allocate PRIN response buffer\n"); ret = MPATH_PR_OTHER; - goto out; + goto out_fd; } ret = __mpath_persistent_reserve_in (fd, prin_sa, resp, noisy); if (ret != MPATH_PR_SUCCESS ) { fprintf (stderr, "Persistent Reserve IN command failed\n"); - goto out; + goto out_fd; } switch(prin_sa) @@ -568,8 +579,8 @@ static int handle_args(int argc, char * argv[], int nline) printf("PR out: command failed\n"); } +out_fd: close (fd); - out : if (ret == MPATH_PR_SYNTAX_ERROR) { free(batch_fn); @@ -844,12 +855,7 @@ static void usage(void) " --reserve|-R PR Out: Reserve\n" " --transport-id=TIDS|-X TIDS TransportIDs can be mentioned\n" " in several forms\n" - " --alloc-length=LEN|-l LEN PR In: maximum allocation length\n" - " Examples:\n" - " mpathpersist --out --register --param-sark=123abc --prout-type=5 /dev/mapper/mpath9\n" - " mpathpersist -i -k /dev/mapper/mpath9\n" - " mpathpersist --out --reserve --param-sark=123abc --prout-type=8 -d /dev/mapper/mpath9\n" - " mpathpersist -i -s -d /dev/mapper/mpath9\n"); + " --alloc-length=LEN|-l LEN PR In: maximum allocation length\n"); } void |