]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
ioctl: add nvme_set_features_iocs_profile2()
authorHannes Reinecke <hare@suse.de>
Fri, 5 Apr 2024 14:31:25 +0000 (16:31 +0200)
committerDaniel Wagner <wagi@monom.org>
Tue, 9 Apr 2024 12:47:59 +0000 (14:47 +0200)
All 'set features' commands have an 'result' field as the last
argument, so add an alternative function nvme_set_features_iocs_profile2()
to follow the same calling convention.

Signed-off-by: Hannes Reinecke <hare@suse.de>
src/libnvme.map
src/nvme/ioctl.c
src/nvme/ioctl.h

index 85f4a4a17a589bbab6c42a322fc6057f9ef34ff9..e5dd410d5c2e0d5b8361b983d3f81f2501f2dab6 100644 (file)
@@ -13,6 +13,7 @@ LIBNVME_1.9 {
                nvme_set_features_timestamp2;
                nvme_set_features_host_behavior2;
                nvme_set_features_host_id2;
+               nvme_set_features_iocs_profile2;
 };
 
 LIBNVME_1_8 {
index dfd17e46d78eca1efd91ed6b32f4daf77693c181..34080274a41d4e8df33f2c749fb00a4e30cf3256 100644 (file)
@@ -793,11 +793,25 @@ int nvme_set_features_write_protect2(int fd, __u32 nsid,
 }
 
 int nvme_set_features_iocs_profile(int fd, __u16 iocsi, bool save)
+{
+       __u32 value = NVME_SET(iocsi, FEAT_IOCSP_IOCSCI);
+       __u32 result = 0;
+       int err;
+
+       err = __nvme_set_features(fd, NVME_FEAT_FID_IOCS_PROFILE, value,
+                                 save, &result);
+       if (err && result)
+               err = result;
+       return err;
+}
+
+int nvme_set_features_iocs_profile2(int fd, __u16 iocsi, bool save,
+                                   __u32 *result)
 {
        __u32 value = NVME_SET(iocsi, FEAT_IOCSP_IOCSCI);
 
        return __nvme_set_features(fd, NVME_FEAT_FID_IOCS_PROFILE, value,
-                                  save, NULL);
+                                  save, result);
 }
 
 int nvme_get_features(struct nvme_get_features_args *args)
index e3f6450c302f2a0daf30486bbd7e4bac065cb9fe..fdf0556257d40f4450815ea6fd6374b08a2bca12 100644 (file)
@@ -3023,6 +3023,19 @@ int nvme_set_features_write_protect2(int fd, __u32 nsid,
  */
 int nvme_set_features_iocs_profile(int fd, __u16 iocsi, bool save);
 
+/**
+ * nvme_set_features_iocs_profile2() - Set I/O command set profile feature
+ * @fd:                File descriptor of nvme device
+ * @iocsi:     I/O Command Set Combination Index
+ * @save:      Save value across power states
+ * @result:    The command completion result from CQE dword0
+ *
+ * Return: 0 if the ioctl was successful, -1 with errno set to EPROTO when
+ * a non-zero state is returned in @result, or -1 with errno set otherwise.
+ */
+int nvme_set_features_iocs_profile2(int fd, __u16 iocsi, bool save,
+                                   __u32 *result);
+
 /**
  * nvme_get_features() - Retrieve a feature attribute
  * @args:      &struct nvme_get_features_args argument structure