dev->name = basename(devstr);
err = open(devstr, flags);
if (err < 0) {
- perror(devstr);
+ nvme_show_perror(devstr);
goto err_free;
}
dev->direct.fd = err;
err = fstat(dev_fd(dev), &dev->direct.stat);
if (err < 0) {
- perror(devstr);
+ nvme_show_perror(devstr);
goto err_close;
}
if (!is_chardev(dev) && !is_blkdev(dev)) {
- nvme_show_error("%s is not a block or character device",
- devstr);
+ nvme_show_error("%s is not a block or character device", devstr);
err = -ENODEV;
goto err_close;
}
{
if (optind >= argc) {
errno = EINVAL;
- perror(argv[0]);
+ nvme_show_perror(argv[0]);
return -EINVAL;
}
return 0;
else if (err > 0)
nvme_show_status(err);
else
- perror("effects log page");
+ nvme_show_perror("effects log page");
close_dev:
while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node))) {
err = nvme_cli_identify_ctrl(dev, &ctrl);
if (err < 0) {
- perror("identify controller");
+ nvme_show_perror("identify controller");
goto close_dev;
} else if (err) {
nvme_show_error("could not identify controller");
else if (err > 0)
nvme_show_status(err);
else
- perror("error log");
+ nvme_show_perror("error log");
+
free(err_log);
+
close_dev:
dev_close(dev);
ret:
else if (err > 0)
nvme_show_status(err);
else
- perror("supported capacity configuration list log");
+ nvme_show_perror("supported capacity configuration list log");
close_dev:
dev_close(dev);
if (!cfg.namespace_id) {
err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
if (err < 0) {
- perror("get-namespace-id");
+ nvme_show_perror("get-namespace-id");
goto close_dev;
}
}
if (cfg.data_len) {
buf = calloc(1, cfg.data_len);
if (!buf) {
- perror("could not alloc memory for io mgmt receive data");
+ nvme_show_perror("could not alloc memory for io mgmt receive data");
err = -ENOMEM;
goto close_dev;
}
if (cfg.file) {
dfd = open(cfg.file, O_RDONLY);
if (dfd < 0) {
- perror(cfg.file);
+ nvme_show_perror(cfg.file);
goto free;
}
}
err = read(dfd, buf, cfg.data_len);
if (err < 0) {
- perror("read");
+ nvme_show_perror("read");
goto close_fd;
}
else if (err > 0)
nvme_show_status(err);
else
- perror("io-mgmt-send");
+ nvme_show_perror("io-mgmt-send");
close_fd:
if (cfg.file)
if (!cfg.namespace_id) {
err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
if (err < 0) {
- perror("get-namespace-id");
+ nvme_show_perror("get-namespace-id");
goto close_dev;
}
}
if (cfg.data_len) {
buf = calloc(1, cfg.data_len);
if (!buf) {
- perror("could not alloc memory for io mgmt receive data");
+ nvme_show_perror("could not alloc memory for io mgmt receive data");
err = -ENOMEM;
goto close_dev;
}
if (cfg.file) {
dfd = open(cfg.file, O_WRONLY | O_CREAT, 0644);
if (dfd < 0) {
- perror(cfg.file);
+ nvme_show_perror(cfg.file);
goto free;
}
err = write(dfd, buf, cfg.data_len);
if (err < 0) {
- perror("write");
+ nvme_show_perror("write");
goto close_fd;
}
} else {
} else if (err > 0) {
nvme_show_status(err);
} else {
- perror("io-mgmt-recv");
+ nvme_show_perror("io-mgmt-recv");
}
close_fd:
log = malloc(cfg.log_len);
if (!log) {
- perror("could not alloc buffer for log\n");
+ nvme_show_perror("could not alloc buffer for log\n");
err = -ENOMEM;
goto close_dev;
}
else if (err > 0)
nvme_show_status(err);
else
- perror("identify namespace for specific LBA format");
+ nvme_show_perror("identify namespace for specific LBA format");
+
close_dev:
dev_close(dev);
ret:
else if (err > 0)
nvme_show_status(err);
else
- perror(attach ? "attach namespace" : "detach namespace");
+ nvme_show_perror(attach ? "attach namespace" : "detach namespace");
close_dev:
dev_close(dev);
if (!cfg.namespace_id) {
err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
if (err < 0) {
- perror("get-namespace-id");
+ nvme_show_perror("get-namespace-id");
goto close_dev;
}
}
else if (err > 0)
nvme_show_status(err);
else
- perror("nvm identify namespace");
+ nvme_show_perror("nvm identify namespace");
+
close_dev:
dev_close(dev);
ret:
ns.nlbaf = NVME_FEAT_LBA_RANGE_MAX - 1;
ns.nulbaf = 0;
}
- err = nvme_identify_iocs_ns_csi_user_data_format(dev_fd(dev),
- cfg.lba_format_index,
- cfg.uuid_index, NVME_CSI_NVM, &nvm_ns);
+
+ err = nvme_identify_iocs_ns_csi_user_data_format(dev_fd(dev), cfg.lba_format_index,
+ cfg.uuid_index, NVME_CSI_NVM, &nvm_ns);
if (!err)
- nvme_show_nvm_id_ns(&nvm_ns, 0, &ns, cfg.lba_format_index, true,
- flags);
+ nvme_show_nvm_id_ns(&nvm_ns, 0, &ns, cfg.lba_format_index, true, flags);
else if (err > 0)
nvme_show_status(err);
else
- perror("NVM identify namespace for specific LBA format");
+ nvme_show_perror("NVM identify namespace for specific LBA format");
+
close_dev:
dev_close(dev);
ret:
flags |= VERBOSE;
if (!cfg.namespace_id) {
- err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev),
- &cfg.namespace_id);
+ err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
if (err < 0) {
- perror("get-namespace-id");
+ nvme_show_perror("get-namespace-id");
goto close_dev;
}
}
err = fstat(fw_fd, &sb);
if (err < 0) {
- perror("fstat");
+ nvme_show_perror("fstat");
goto close_fw_fd;
}
err = fstat(sec_fd, &sb);
if (err < 0) {
- perror("fstat");
+ nvme_show_perror("fstat");
goto close_sec_fd;
}
if (strlen(cfg.data)) {
dfd = open(cfg.data, flags, mode);
if (dfd < 0) {
- perror(cfg.data);
+ nvme_show_perror(cfg.data);
err = -EINVAL;
goto close_dev;
}
if (strlen(cfg.metadata)) {
mfd = open(cfg.metadata, flags, mode);
if (mfd < 0) {
- perror(cfg.metadata);
+ nvme_show_perror(cfg.metadata);
err = -EINVAL;
goto close_dfd;
}
if (strlen(cfg.input_file)) {
dfd = open(cfg.input_file, flags, mode);
if (dfd < 0) {
- perror(cfg.input_file);
+ nvme_show_perror(cfg.input_file);
err = -EINVAL;
goto close_dev;
}
if (cfg.metadata && strlen(cfg.metadata)) {
mfd = open(cfg.metadata, flags, mode);
if (mfd < 0) {
- perror(cfg.metadata);
+ nvme_show_perror(cfg.metadata);
err = -EINVAL;
goto close_dfd;
}
if (cfg.write) {
if (read(mfd, mdata, cfg.metadata_len) < 0) {
err = -errno;
- perror("failed to read metadata write buffer");
+ nvme_show_perror("failed to read metadata write buffer");
goto free_metadata;
}
} else {
if (strlen(cfg.input_file)) {
fd = open(cfg.input_file, flags, mode);
if (fd < 0) {
- perror(cfg.input_file);
+ nvme_show_perror(cfg.input_file);
err = -EINVAL;
goto close_dev;
}