-#define DKIOCGETMAXBLOCKCOUNTREAD _IOR('d', 64, u_int64_t)
-#define DKIOCGETMAXBLOCKCOUNTWRITE _IOR('d', 65, u_int64_t)
-#define DKIOCGETMAXBYTECOUNTREAD _IOR('d', 70, u_int64_t)
-#define DKIOCGETMAXBYTECOUNTWRITE _IOR('d', 71, u_int64_t)
+#define DKIOCREQUESTIDLE _IO('d', 30)
+#define DKIOCUNMAP _IOW('d', 31, dk_unmap_t)
+
+#define DKIOCGETMAXBLOCKCOUNTREAD _IOR('d', 64, uint64_t)
+#define DKIOCGETMAXBLOCKCOUNTWRITE _IOR('d', 65, uint64_t)
+#define DKIOCGETMAXBYTECOUNTREAD _IOR('d', 70, uint64_t)
+#define DKIOCGETMAXBYTECOUNTWRITE _IOR('d', 71, uint64_t)
+
+#define DKIOCGETMAXSEGMENTCOUNTREAD _IOR('d', 66, uint64_t)
+#define DKIOCGETMAXSEGMENTCOUNTWRITE _IOR('d', 67, uint64_t)
+#define DKIOCGETMAXSEGMENTBYTECOUNTREAD _IOR('d', 68, uint64_t)
+#define DKIOCGETMAXSEGMENTBYTECOUNTWRITE _IOR('d', 69, uint64_t)
+
+#define DKIOCGETMINSEGMENTALIGNMENTBYTECOUNT _IOR('d', 74, uint64_t)
+#define DKIOCGETMAXSEGMENTADDRESSABLEBITCOUNT _IOR('d', 75, uint64_t)
+
+#define DKIOCGETFEATURES _IOR('d', 76, uint32_t)
+#define DKIOCGETPHYSICALBLOCKSIZE _IOR('d', 77, uint32_t)
+#define DKIOCGETCOMMANDPOOLSIZE _IOR('d', 78, uint32_t)
+
+typedef struct
+{
+ uint64_t offset;
+ uint64_t length;