Deleted Added
full compact
ctladm.c (275959) ctladm.c (278037)
1/*-
2 * Copyright (c) 2003, 2004 Silicon Graphics International Corp.
3 * Copyright (c) 1997-2007 Kenneth D. Merry
4 * Copyright (c) 2012 The FreeBSD Foundation
5 * All rights reserved.
6 *
7 * Portions of this software were developed by Edward Tomasz Napierala
8 * under sponsorship from the FreeBSD Foundation.

--- 27 unchanged lines hidden (view full) ---

36 */
37/*
38 * CAM Target Layer exercise program.
39 *
40 * Author: Ken Merry <ken@FreeBSD.org>
41 */
42
43#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2003, 2004 Silicon Graphics International Corp.
3 * Copyright (c) 1997-2007 Kenneth D. Merry
4 * Copyright (c) 2012 The FreeBSD Foundation
5 * All rights reserved.
6 *
7 * Portions of this software were developed by Edward Tomasz Napierala
8 * under sponsorship from the FreeBSD Foundation.

--- 27 unchanged lines hidden (view full) ---

36 */
37/*
38 * CAM Target Layer exercise program.
39 *
40 * Author: Ken Merry <ken@FreeBSD.org>
41 */
42
43#include <sys/cdefs.h>
44__FBSDID("$FreeBSD: head/usr.sbin/ctladm/ctladm.c 275959 2014-12-20 16:39:56Z mav $");
44__FBSDID("$FreeBSD: head/usr.sbin/ctladm/ctladm.c 278037 2015-02-01 21:50:28Z mav $");
45
46#include <sys/ioctl.h>
47#include <sys/types.h>
48#include <sys/stat.h>
49#include <sys/param.h>
50#include <sys/linker.h>
51#include <sys/queue.h>
52#include <sys/callout.h>

--- 63 unchanged lines hidden (view full) ---

116 CTLADM_CMD_BBRREAD,
117 CTLADM_CMD_PRES_IN,
118 CTLADM_CMD_PRES_OUT,
119 CTLADM_CMD_INQ_VPD_DEVID,
120 CTLADM_CMD_RTPG,
121 CTLADM_CMD_MODIFY,
122 CTLADM_CMD_ISLIST,
123 CTLADM_CMD_ISLOGOUT,
45
46#include <sys/ioctl.h>
47#include <sys/types.h>
48#include <sys/stat.h>
49#include <sys/param.h>
50#include <sys/linker.h>
51#include <sys/queue.h>
52#include <sys/callout.h>

--- 63 unchanged lines hidden (view full) ---

116 CTLADM_CMD_BBRREAD,
117 CTLADM_CMD_PRES_IN,
118 CTLADM_CMD_PRES_OUT,
119 CTLADM_CMD_INQ_VPD_DEVID,
120 CTLADM_CMD_RTPG,
121 CTLADM_CMD_MODIFY,
122 CTLADM_CMD_ISLIST,
123 CTLADM_CMD_ISLOGOUT,
124 CTLADM_CMD_ISTERMINATE
124 CTLADM_CMD_ISTERMINATE,
125 CTLADM_CMD_LUNMAP
125} ctladm_cmdfunction;
126
127typedef enum {
128 CTLADM_ARG_NONE = 0x0000000,
129 CTLADM_ARG_AUTOSENSE = 0x0000001,
130 CTLADM_ARG_DEVICE = 0x0000002,
131 CTLADM_ARG_ARRAYSIZE = 0x0000004,
132 CTLADM_ARG_BACKEND = 0x0000008,

--- 50 unchanged lines hidden (view full) ---

183 {"hardstop", CTLADM_CMD_HARDSTOP, CTLADM_ARG_NONE, NULL},
184 {"help", CTLADM_CMD_HELP, CTLADM_ARG_NONE, NULL},
185 {"inject", CTLADM_CMD_ERR_INJECT, CTLADM_ARG_NEED_TL, "cd:i:p:r:s:"},
186 {"inquiry", CTLADM_CMD_INQUIRY, CTLADM_ARG_NEED_TL, NULL},
187 {"islist", CTLADM_CMD_ISLIST, CTLADM_ARG_NONE, "vx"},
188 {"islogout", CTLADM_CMD_ISLOGOUT, CTLADM_ARG_NONE, "ac:i:p:"},
189 {"isterminate", CTLADM_CMD_ISTERMINATE, CTLADM_ARG_NONE, "ac:i:p:"},
190 {"lunlist", CTLADM_CMD_LUNLIST, CTLADM_ARG_NONE, NULL},
126} ctladm_cmdfunction;
127
128typedef enum {
129 CTLADM_ARG_NONE = 0x0000000,
130 CTLADM_ARG_AUTOSENSE = 0x0000001,
131 CTLADM_ARG_DEVICE = 0x0000002,
132 CTLADM_ARG_ARRAYSIZE = 0x0000004,
133 CTLADM_ARG_BACKEND = 0x0000008,

--- 50 unchanged lines hidden (view full) ---

184 {"hardstop", CTLADM_CMD_HARDSTOP, CTLADM_ARG_NONE, NULL},
185 {"help", CTLADM_CMD_HELP, CTLADM_ARG_NONE, NULL},
186 {"inject", CTLADM_CMD_ERR_INJECT, CTLADM_ARG_NEED_TL, "cd:i:p:r:s:"},
187 {"inquiry", CTLADM_CMD_INQUIRY, CTLADM_ARG_NEED_TL, NULL},
188 {"islist", CTLADM_CMD_ISLIST, CTLADM_ARG_NONE, "vx"},
189 {"islogout", CTLADM_CMD_ISLOGOUT, CTLADM_ARG_NONE, "ac:i:p:"},
190 {"isterminate", CTLADM_CMD_ISTERMINATE, CTLADM_ARG_NONE, "ac:i:p:"},
191 {"lunlist", CTLADM_CMD_LUNLIST, CTLADM_ARG_NONE, NULL},
192 {"lunmap", CTLADM_CMD_LUNMAP, CTLADM_ARG_NONE, "p:l:L:"},
191 {"modesense", CTLADM_CMD_MODESENSE, CTLADM_ARG_NEED_TL, "P:S:dlm:c:"},
192 {"modify", CTLADM_CMD_MODIFY, CTLADM_ARG_NONE, "b:l:s:"},
193 {"port", CTLADM_CMD_PORT, CTLADM_ARG_NONE, "lo:p:qt:w:W:x"},
193 {"modesense", CTLADM_CMD_MODESENSE, CTLADM_ARG_NEED_TL, "P:S:dlm:c:"},
194 {"modify", CTLADM_CMD_MODIFY, CTLADM_ARG_NONE, "b:l:s:"},
195 {"port", CTLADM_CMD_PORT, CTLADM_ARG_NONE, "lo:p:qt:w:W:x"},
194 {"portlist", CTLADM_CMD_PORTLIST, CTLADM_ARG_NONE, "f:ip:qvx"},
196 {"portlist", CTLADM_CMD_PORTLIST, CTLADM_ARG_NONE, "f:ilp:qvx"},
195 {"prin", CTLADM_CMD_PRES_IN, CTLADM_ARG_NEED_TL, "a:"},
196 {"prout", CTLADM_CMD_PRES_OUT, CTLADM_ARG_NEED_TL, "a:k:r:s:"},
197 {"read", CTLADM_CMD_READ, CTLADM_ARG_NEED_TL, rw_opts},
198 {"readcapacity", CTLADM_CMD_READCAPACITY, CTLADM_ARG_NEED_TL, "c:"},
199 {"realsync", CTLADM_CMD_REALSYNC, CTLADM_ARG_NONE, NULL},
200 {"remove", CTLADM_CMD_RM, CTLADM_ARG_NONE, "b:l:o:"},
201 {"reportluns", CTLADM_CMD_REPORT_LUNS, CTLADM_ARG_NEED_TL, NULL},
202 {"reqsense", CTLADM_CMD_REQ_SENSE, CTLADM_ARG_NEED_TL, NULL},

--- 3898 unchanged lines hidden (view full) ---

4101 * Port information.
4102 */
4103struct cctl_port {
4104 uint64_t port_id;
4105 char *online;
4106 char *frontend_type;
4107 char *name;
4108 int pp, vp;
197 {"prin", CTLADM_CMD_PRES_IN, CTLADM_ARG_NEED_TL, "a:"},
198 {"prout", CTLADM_CMD_PRES_OUT, CTLADM_ARG_NEED_TL, "a:k:r:s:"},
199 {"read", CTLADM_CMD_READ, CTLADM_ARG_NEED_TL, rw_opts},
200 {"readcapacity", CTLADM_CMD_READCAPACITY, CTLADM_ARG_NEED_TL, "c:"},
201 {"realsync", CTLADM_CMD_REALSYNC, CTLADM_ARG_NONE, NULL},
202 {"remove", CTLADM_CMD_RM, CTLADM_ARG_NONE, "b:l:o:"},
203 {"reportluns", CTLADM_CMD_REPORT_LUNS, CTLADM_ARG_NEED_TL, NULL},
204 {"reqsense", CTLADM_CMD_REQ_SENSE, CTLADM_ARG_NEED_TL, NULL},

--- 3898 unchanged lines hidden (view full) ---

4103 * Port information.
4104 */
4105struct cctl_port {
4106 uint64_t port_id;
4107 char *online;
4108 char *frontend_type;
4109 char *name;
4110 int pp, vp;
4109 char *target, *port;
4111 char *target, *port, *lun_map;
4110 STAILQ_HEAD(,cctl_lun_nv) init_list;
4112 STAILQ_HEAD(,cctl_lun_nv) init_list;
4113 STAILQ_HEAD(,cctl_lun_nv) lun_list;
4111 STAILQ_HEAD(,cctl_lun_nv) attr_list;
4112 STAILQ_ENTRY(cctl_port) links;
4113};
4114
4115struct cctl_portlist_data {
4116 int num_ports;
4117 STAILQ_HEAD(,cctl_port) port_list;
4118 struct cctl_port *cur_port;

--- 37 unchanged lines hidden (view full) ---

4156 if (cur_port == NULL)
4157 err(1, "%s: cannot allocate %zd bytes", __func__,
4158 sizeof(*cur_port));
4159
4160 portlist->num_ports++;
4161 portlist->cur_port = cur_port;
4162
4163 STAILQ_INIT(&cur_port->init_list);
4114 STAILQ_HEAD(,cctl_lun_nv) attr_list;
4115 STAILQ_ENTRY(cctl_port) links;
4116};
4117
4118struct cctl_portlist_data {
4119 int num_ports;
4120 STAILQ_HEAD(,cctl_port) port_list;
4121 struct cctl_port *cur_port;

--- 37 unchanged lines hidden (view full) ---

4159 if (cur_port == NULL)
4160 err(1, "%s: cannot allocate %zd bytes", __func__,
4161 sizeof(*cur_port));
4162
4163 portlist->num_ports++;
4164 portlist->cur_port = cur_port;
4165
4166 STAILQ_INIT(&cur_port->init_list);
4167 STAILQ_INIT(&cur_port->lun_list);
4164 STAILQ_INIT(&cur_port->attr_list);
4165 cur_port->port_id = portlist->cur_id;
4166 STAILQ_INSERT_TAIL(&portlist->port_list, cur_port, links);
4167 }
4168}
4169
4170static void
4171cctl_end_pelement(void *user_data, const char *name)

--- 43 unchanged lines hidden (view full) ---

4215 } else if (strcmp(name, "virtual_port") == 0) {
4216 cur_port->vp = strtoull(str, NULL, 0);
4217 } else if (strcmp(name, "target") == 0) {
4218 cur_port->target = str;
4219 str = NULL;
4220 } else if (strcmp(name, "port") == 0) {
4221 cur_port->port = str;
4222 str = NULL;
4168 STAILQ_INIT(&cur_port->attr_list);
4169 cur_port->port_id = portlist->cur_id;
4170 STAILQ_INSERT_TAIL(&portlist->port_list, cur_port, links);
4171 }
4172}
4173
4174static void
4175cctl_end_pelement(void *user_data, const char *name)

--- 43 unchanged lines hidden (view full) ---

4219 } else if (strcmp(name, "virtual_port") == 0) {
4220 cur_port->vp = strtoull(str, NULL, 0);
4221 } else if (strcmp(name, "target") == 0) {
4222 cur_port->target = str;
4223 str = NULL;
4224 } else if (strcmp(name, "port") == 0) {
4225 cur_port->port = str;
4226 str = NULL;
4227 } else if (strcmp(name, "lun_map") == 0) {
4228 cur_port->lun_map = str;
4229 str = NULL;
4223 } else if (strcmp(name, "targ_port") == 0) {
4224 portlist->cur_port = NULL;
4225 } else if (strcmp(name, "ctlportlist") == 0) {
4226 /* Nothing. */
4227 } else {
4228 struct cctl_lun_nv *nv;
4229
4230 nv = calloc(1, sizeof(*nv));
4231 if (nv == NULL)
4232 err(1, "%s: can't allocate %zd bytes for nv pair",
4233 __func__, sizeof(*nv));
4234
4230 } else if (strcmp(name, "targ_port") == 0) {
4231 portlist->cur_port = NULL;
4232 } else if (strcmp(name, "ctlportlist") == 0) {
4233 /* Nothing. */
4234 } else {
4235 struct cctl_lun_nv *nv;
4236
4237 nv = calloc(1, sizeof(*nv));
4238 if (nv == NULL)
4239 err(1, "%s: can't allocate %zd bytes for nv pair",
4240 __func__, sizeof(*nv));
4241
4235 if (strcmp(name, "initiator") == 0)
4242 if (strcmp(name, "initiator") == 0 ||
4243 strcmp(name, "lun") == 0)
4236 asprintf(&nv->name, "%ju", portlist->cur_id);
4237 else
4238 nv->name = strdup(name);
4239 if (nv->name == NULL)
4240 err(1, "%s: can't allocated %zd bytes for string",
4241 __func__, strlen(name));
4242
4243 nv->value = str;
4244 str = NULL;
4245 if (strcmp(name, "initiator") == 0)
4246 STAILQ_INSERT_TAIL(&cur_port->init_list, nv, links);
4244 asprintf(&nv->name, "%ju", portlist->cur_id);
4245 else
4246 nv->name = strdup(name);
4247 if (nv->name == NULL)
4248 err(1, "%s: can't allocated %zd bytes for string",
4249 __func__, strlen(name));
4250
4251 nv->value = str;
4252 str = NULL;
4253 if (strcmp(name, "initiator") == 0)
4254 STAILQ_INSERT_TAIL(&cur_port->init_list, nv, links);
4255 else if (strcmp(name, "lun") == 0)
4256 STAILQ_INSERT_TAIL(&cur_port->lun_list, nv, links);
4247 else
4248 STAILQ_INSERT_TAIL(&cur_port->attr_list, nv, links);
4249 }
4250
4251 free(str);
4252}
4253
4254static void

--- 14 unchanged lines hidden (view full) ---

4269 struct cctl_port *port;
4270 XML_Parser parser;
4271 char *port_str;
4272 int port_len;
4273 int dump_xml = 0;
4274 int retval, c;
4275 char *frontend = NULL;
4276 uint64_t portarg = UINT64_MAX;
4257 else
4258 STAILQ_INSERT_TAIL(&cur_port->attr_list, nv, links);
4259 }
4260
4261 free(str);
4262}
4263
4264static void

--- 14 unchanged lines hidden (view full) ---

4279 struct cctl_port *port;
4280 XML_Parser parser;
4281 char *port_str;
4282 int port_len;
4283 int dump_xml = 0;
4284 int retval, c;
4285 char *frontend = NULL;
4286 uint64_t portarg = UINT64_MAX;
4277 int verbose = 0, init = 0, quiet = 0;
4287 int verbose = 0, init = 0, lun = 0, quiet = 0;
4278
4279 retval = 0;
4280 port_len = 4096;
4281
4282 bzero(&portlist, sizeof(portlist));
4283 STAILQ_INIT(&portlist.port_list);
4284
4285 while ((c = getopt(argc, argv, combinedopt)) != -1) {
4286 switch (c) {
4287 case 'f':
4288 frontend = strdup(optarg);
4289 break;
4290 case 'i':
4291 init++;
4292 break;
4288
4289 retval = 0;
4290 port_len = 4096;
4291
4292 bzero(&portlist, sizeof(portlist));
4293 STAILQ_INIT(&portlist.port_list);
4294
4295 while ((c = getopt(argc, argv, combinedopt)) != -1) {
4296 switch (c) {
4297 case 'f':
4298 frontend = strdup(optarg);
4299 break;
4300 case 'i':
4301 init++;
4302 break;
4303 case 'l':
4304 lun++;
4305 break;
4293 case 'p':
4294 portarg = strtoll(optarg, NULL, 0);
4295 break;
4296 case 'q':
4297 quiet++;
4298 break;
4299 case 'v':
4300 verbose++;

--- 75 unchanged lines hidden (view full) ---

4376 if (port->target)
4377 printf(" Target: %s\n", port->target);
4378 STAILQ_FOREACH(nv, &port->init_list, links) {
4379 printf(" Initiator %s: %s\n",
4380 nv->name, nv->value);
4381 }
4382 }
4383
4306 case 'p':
4307 portarg = strtoll(optarg, NULL, 0);
4308 break;
4309 case 'q':
4310 quiet++;
4311 break;
4312 case 'v':
4313 verbose++;

--- 75 unchanged lines hidden (view full) ---

4389 if (port->target)
4390 printf(" Target: %s\n", port->target);
4391 STAILQ_FOREACH(nv, &port->init_list, links) {
4392 printf(" Initiator %s: %s\n",
4393 nv->name, nv->value);
4394 }
4395 }
4396
4397 if (lun || verbose) {
4398 if (port->lun_map) {
4399 STAILQ_FOREACH(nv, &port->lun_list, links)
4400 printf(" LUN %s: %s\n",
4401 nv->name, nv->value);
4402 if (STAILQ_EMPTY(&port->lun_list))
4403 printf(" No LUNs mapped\n");
4404 } else
4405 printf(" All LUNs mapped\n");
4406 }
4407
4384 if (verbose) {
4385 STAILQ_FOREACH(nv, &port->attr_list, links) {
4386 printf(" %s=%s\n", nv->name, nv->value);
4387 }
4388 }
4389 }
4390bailout:
4391 free(port_str);
4392
4393 return (retval);
4394}
4395
4408 if (verbose) {
4409 STAILQ_FOREACH(nv, &port->attr_list, links) {
4410 printf(" %s=%s\n", nv->name, nv->value);
4411 }
4412 }
4413 }
4414bailout:
4415 free(port_str);
4416
4417 return (retval);
4418}
4419
4420static int
4421cctl_lunmap(int fd, int argc, char **argv, char *combinedopt)
4422{
4423 struct ctl_lun_map lm;
4424 int retval = 0, c;
4425
4426 retval = 0;
4427 lm.port = UINT32_MAX;
4428 lm.plun = UINT32_MAX;
4429 lm.lun = UINT32_MAX;
4430
4431 while ((c = getopt(argc, argv, combinedopt)) != -1) {
4432 switch (c) {
4433 case 'p':
4434 lm.port = strtoll(optarg, NULL, 0);
4435 break;
4436 case 'l':
4437 lm.plun = strtoll(optarg, NULL, 0);
4438 break;
4439 case 'L':
4440 lm.lun = strtoll(optarg, NULL, 0);
4441 break;
4442 default:
4443 break;
4444 }
4445 }
4446
4447 if (ioctl(fd, CTL_LUN_MAP, &lm) == -1) {
4448 warn("%s: error issuing CTL_LUN_MAP ioctl", __func__);
4449 retval = 1;
4450 }
4451
4452 return (retval);
4453}
4454
4396void
4397usage(int error)
4398{
4399 fprintf(error ? stderr : stdout,
4400"Usage:\n"
4401"Primary commands:\n"
4402" ctladm tur [dev_id][general options]\n"
4403" ctladm inquiry [dev_id][general options]\n"

--- 21 unchanged lines hidden (view full) ---

4425" ctladm remove <-b backend> <-l lun_id> [-o name=value]\n"
4426" ctladm modify <-b backend> <-l lun_id> <-s size_bytes>\n"
4427" ctladm devlist [-b backend] [-v] [-x]\n"
4428" ctladm shutdown\n"
4429" ctladm startup\n"
4430" ctladm hardstop\n"
4431" ctladm hardstart\n"
4432" ctladm lunlist\n"
4455void
4456usage(int error)
4457{
4458 fprintf(error ? stderr : stdout,
4459"Usage:\n"
4460"Primary commands:\n"
4461" ctladm tur [dev_id][general options]\n"
4462" ctladm inquiry [dev_id][general options]\n"

--- 21 unchanged lines hidden (view full) ---

4484" ctladm remove <-b backend> <-l lun_id> [-o name=value]\n"
4485" ctladm modify <-b backend> <-l lun_id> <-s size_bytes>\n"
4486" ctladm devlist [-b backend] [-v] [-x]\n"
4487" ctladm shutdown\n"
4488" ctladm startup\n"
4489" ctladm hardstop\n"
4490" ctladm hardstart\n"
4491" ctladm lunlist\n"
4492" ctladm lunmap -p targ_port [-l pLUN] [-L cLUN]\n"
4433" ctladm bbrread [dev_id] <-l lba> <-d datalen>\n"
4434" ctladm delay [dev_id] <-l datamove|done> [-T oneshot|cont]\n"
4435" [-t secs]\n"
4436" ctladm realsync <on|off|query>\n"
4437" ctladm setsync [dev_id] <-i interval>\n"
4438" ctladm getsync [dev_id]\n"
4439" ctladm inject [dev_id] <-i action> <-p pattern> [-r lba,len]\n"
4440" [-s len fmt [args]] [-c] [-d delete_id]\n"

--- 83 unchanged lines hidden (view full) ---

4524"-W wwpn : set WWPN for one frontend\n"
4525"-t port_type : specify fc, scsi, ioctl, internal frontend type\n"
4526"-p targ_port : specify target port number\n"
4527"-q : omit header in list output\n"
4528"-x : output port list in XML format\n"
4529"portlist options:\n"
4530"-f fronetnd : specify frontend type\n"
4531"-i : report target and initiators addresses\n"
4493" ctladm bbrread [dev_id] <-l lba> <-d datalen>\n"
4494" ctladm delay [dev_id] <-l datamove|done> [-T oneshot|cont]\n"
4495" [-t secs]\n"
4496" ctladm realsync <on|off|query>\n"
4497" ctladm setsync [dev_id] <-i interval>\n"
4498" ctladm getsync [dev_id]\n"
4499" ctladm inject [dev_id] <-i action> <-p pattern> [-r lba,len]\n"
4500" [-s len fmt [args]] [-c] [-d delete_id]\n"

--- 83 unchanged lines hidden (view full) ---

4584"-W wwpn : set WWPN for one frontend\n"
4585"-t port_type : specify fc, scsi, ioctl, internal frontend type\n"
4586"-p targ_port : specify target port number\n"
4587"-q : omit header in list output\n"
4588"-x : output port list in XML format\n"
4589"portlist options:\n"
4590"-f fronetnd : specify frontend type\n"
4591"-i : report target and initiators addresses\n"
4592"-l : report LUN mapping\n"
4532"-p targ_port : specify target port number\n"
4533"-q : omit header in list output\n"
4534"-v : verbose output (report all port options)\n"
4535"-x : output port list in XML format\n"
4593"-p targ_port : specify target port number\n"
4594"-q : omit header in list output\n"
4595"-v : verbose output (report all port options)\n"
4596"-x : output port list in XML format\n"
4597"lunmap options:\n"
4598"-p targ_port : specify target port number\n"
4599"-L pLUN : specify port-visible LUN\n"
4600"-L cLUN : specify CTL LUN\n"
4536"bbrread options:\n"
4537"-l lba : starting LBA\n"
4538"-d datalen : length, in bytes, to read\n",
4539CTL_DEFAULT_DEV);
4540}
4541
4542int
4543main(int argc, char **argv)

--- 211 unchanged lines hidden (view full) ---

4755 argc, argv, combinedopt, command);
4756 break;
4757 case CTLADM_CMD_PORT:
4758 retval = cctl_port(fd, argc, argv, combinedopt);
4759 break;
4760 case CTLADM_CMD_PORTLIST:
4761 retval = cctl_portlist(fd, argc, argv, combinedopt);
4762 break;
4601"bbrread options:\n"
4602"-l lba : starting LBA\n"
4603"-d datalen : length, in bytes, to read\n",
4604CTL_DEFAULT_DEV);
4605}
4606
4607int
4608main(int argc, char **argv)

--- 211 unchanged lines hidden (view full) ---

4820 argc, argv, combinedopt, command);
4821 break;
4822 case CTLADM_CMD_PORT:
4823 retval = cctl_port(fd, argc, argv, combinedopt);
4824 break;
4825 case CTLADM_CMD_PORTLIST:
4826 retval = cctl_portlist(fd, argc, argv, combinedopt);
4827 break;
4828 case CTLADM_CMD_LUNMAP:
4829 retval = cctl_lunmap(fd, argc, argv, combinedopt);
4830 break;
4763 case CTLADM_CMD_READCAPACITY:
4764 retval = cctl_read_capacity(fd, target, lun, initid, retries,
4765 argc, argv, combinedopt);
4766 break;
4767 case CTLADM_CMD_MODESENSE:
4768 retval = cctl_mode_sense(fd, target, lun, initid, retries,
4769 argc, argv, combinedopt);
4770 break;

--- 91 unchanged lines hidden ---
4831 case CTLADM_CMD_READCAPACITY:
4832 retval = cctl_read_capacity(fd, target, lun, initid, retries,
4833 argc, argv, combinedopt);
4834 break;
4835 case CTLADM_CMD_MODESENSE:
4836 retval = cctl_mode_sense(fd, target, lun, initid, retries,
4837 argc, argv, combinedopt);
4838 break;

--- 91 unchanged lines hidden ---