return do_admin_op(ns_detach_ctrls, dev, nsid, ctrlist);
}
+int nvme_cli_format_nvm(struct nvme_dev *dev, struct nvme_format_nvm_args *args)
+{
+ return do_admin_args_op(format_nvm, dev, args);
+}
+
/* The MI & direct interfaces don't have an exactly-matching API for
* ns_mgmt_create, as we don't support a timeout for MI.
*/
int nvme_cli_ns_detach_ctrls(struct nvme_dev *dev, __u32 nsid,
struct nvme_ctrl_list *ctrlist);
+int nvme_cli_format_nvm(struct nvme_dev *dev, struct nvme_format_nvm_args *args);
+
int nvme_cli_get_features(struct nvme_dev *dev,
struct nvme_get_features_args *args);
struct nvme_format_nvm_args args = {
.args_size = sizeof(args),
- .fd = dev_fd(dev),
.nsid = cfg.namespace_id,
.lbafu = (cfg.lbaf & NVME_NS_FLBAS_HIGHER_MASK) >> 4,
.lbaf = cfg.lbaf & NVME_NS_FLBAS_LOWER_MASK,
.timeout = cfg.timeout,
.result = NULL,
};
- err = nvme_format_nvm(&args);
+ err = nvme_cli_format_nvm(dev, &args);
if (err < 0)
fprintf(stderr, "format: %s\n", nvme_strerror(errno));
else if (err != 0)
nvme_show_status(err);
else {
printf("Success formatting namespace:%x\n", cfg.namespace_id);
- if (cfg.lbaf != prev_lbaf){
+ if (dev->type == NVME_DEV_DIRECT && cfg.lbaf != prev_lbaf){
if (is_chardev(dev)) {
if (ioctl(dev_fd(dev), NVME_IOCTL_RESCAN) < 0) {
fprintf(stderr, "failed to rescan namespaces\n");
}
}
}
- if (cfg.reset && is_chardev(dev))
+ if (dev->type == NVME_DEV_DIRECT && cfg.reset && is_chardev(dev))
nvme_ctrl_reset(dev_fd(dev));
}