}
 
 int nvme_set_features_timestamp(int fd, bool save, __u64 timestamp)
+{
+       __u32 result = 0;
+       int err;
+
+       err = nvme_set_features_timestamp2(fd, save, timestamp, &result);
+       if (err && result)
+               err = result;
+       return err;
+}
+
+int nvme_set_features_timestamp2(int fd, bool save, __u64 timestamp,
+               __u32 *result)
 {
        __le64 t = cpu_to_le64(timestamp);
        struct nvme_timestamp ts = {};
                .data_len = sizeof(ts),
                .data = &ts,
                .timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
-               .result = NULL,
+               .result = result,
        };
 
        memcpy(ts.timestamp, &t, sizeof(ts.timestamp));
 
  */
 int nvme_set_features_timestamp(int fd, bool save, __u64 timestamp);
 
+/**
+ * nvme_set_features_timestamp2() - Set timestamp feature
+ * @fd:                File descriptor of nvme device
+ * @save:      Save value across power states
+ * @timestamp: The current timestamp value to assign to this feature
+ * @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_timestamp2(int fd, bool save, __u64 timestamp,
+               __u32 *result);
+
 /**
  * nvme_set_features_hctm() - Set thermal management feature
  * @fd:                File descriptor of nvme device