io_uring_cmd: suppport for trim operation
[fio.git] / engines / nvme.h
index 1c0e526b95edfe67e0c6fef4e34e5e098e96a1e7..408594d5509326b606c981cebbeea3e055eaeaf0 100644 (file)
@@ -48,6 +48,8 @@ struct nvme_uring_cmd {
 #define NVME_ZNS_ZSA_RESET 0x4
 #define NVME_ZONE_TYPE_SEQWRITE_REQ 0x2
 
+#define NVME_ATTRIBUTE_DEALLOCATE (1 << 2)
+
 enum nvme_identify_cns {
        NVME_IDENTIFY_CNS_NS            = 0x00,
        NVME_IDENTIFY_CNS_CSI_NS        = 0x05,
@@ -67,6 +69,7 @@ enum nvme_admin_opcode {
 enum nvme_io_opcode {
        nvme_cmd_write                  = 0x01,
        nvme_cmd_read                   = 0x02,
+       nvme_cmd_dsm                    = 0x09,
        nvme_cmd_io_mgmt_recv           = 0x12,
        nvme_zns_cmd_mgmt_send          = 0x79,
        nvme_zns_cmd_mgmt_recv          = 0x7a,
@@ -207,6 +210,15 @@ struct nvme_fdp_ruh_status {
        struct nvme_fdp_ruh_status_desc ruhss[];
 };
 
+struct nvme_dsm_range {
+       __le32  cattr;
+       __le32  nlb;
+       __le64  slba;
+};
+
+int fio_nvme_trim(const struct thread_data *td, struct fio_file *f,
+                 unsigned long long offset, unsigned long long len);
+
 int fio_nvme_iomgmt_ruhs(struct thread_data *td, struct fio_file *f,
                         struct nvme_fdp_ruh_status *ruhs, __u32 bytes);