-c <ctrl-list,>::
-controllers=<ctrl-list,>::
- The comma separated list of controller identifiers to attach
- the namespace too.
+ The comma separated list of controller identifiers to attach the
+ namespace too. If no list is provided, the namespace will be attached
+ to the <device> controller used for this command.
-o <fmt>::
--output-format=<fmt>::
EXAMPLES
--------
- Attach namespace to the controller:
+ Attach namespace 2 to the controllers with id 0x21 and 0x22:
- # nvme attach-ns /dev/nvme1 -n 0x2 -c 0x21
+ # nvme attach-ns /dev/nvme1 -n 0x2 -c 0x21,0x22
+
+ Attach namespace 3 to nvme0:
+
+ # nvme attach-ns /dev/nvme0 -n 3
NVME
----
num = argconfig_parse_comma_sep_array_u16(cfg.cntlist,
list, ARRAY_SIZE(list));
- if (!num)
- fprintf(stderr, "warning: empty controller-id list will result in no actual change in namespace attachment\n");
-
if (num == -1) {
nvme_show_error("%s: controller id list is malformed", cmd->name);
return -EINVAL;
if (!cntlist)
return -ENOMEM;
- nvme_init_ctrl_list(cntlist, num, list);
+ if (argconfig_parse_seen(opts, "controllers")) {
+ nvme_init_ctrl_list(cntlist, num, list);
+ } else {
+ struct nvme_id_ctrl ctrl = { 0 };
+
+ if (nvme_cli_identify_ctrl(dev, &ctrl)) {
+ perror("identify-ctrl");
+ return -errno;
+ }
+ cntlist->num = cpu_to_le16(1);
+ cntlist->identifier[0] = ctrl.cntlid;
+ }
if (attach)
err = nvme_cli_ns_attach_ctrls(dev, cfg.namespace_id,