Add os_trim() support for DragonFlyBSD
[fio.git] / os / os-dragonfly.h
index b67c660f00f651106d1501d0c18b8b1d84df2b44..d776d1f75635f655ea8020b4b319740f68cac3fd 100644 (file)
@@ -9,6 +9,7 @@
 #include <sys/sysctl.h>
 #include <sys/statvfs.h>
 #include <sys/diskslice.h>
+#include <sys/ioctl_compat.h>
 
 #include "../file.h"
 
@@ -16,6 +17,7 @@
 #define FIO_USE_GENERIC_RAND
 #define FIO_USE_GENERIC_INIT_RANDOM_STATE
 #define FIO_HAVE_FS_STAT
+#define FIO_HAVE_TRIM
 #define FIO_HAVE_CHARDEV_SIZE
 #define FIO_HAVE_GETTID
 
@@ -84,6 +86,20 @@ static inline unsigned long long get_fs_free_size(const char *path)
        return ret;
 }
 
+static inline int os_trim(int fd, unsigned long long start,
+                         unsigned long long len)
+{
+       off_t range[2];
+
+       range[0] = start;
+       range[1] = len;
+
+       if (!ioctl(fd, IOCTLTRIM, range))
+               return 0;
+
+       return errno;
+}
+
 #ifdef MADV_FREE
 #define FIO_MADV_FREE  MADV_FREE
 #endif