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 --- |