From: Tomohiro Kusumi Date: Thu, 14 Jul 2016 12:27:43 +0000 (+0900) Subject: Add os_trim() support for FreeBSD X-Git-Tag: fio-2.13~16 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=0bf31987c39999b8f93f9cee8a82c5e76f457cdb;hp=c9a4e0c80470640f5d6e48dc827d28fffef1cadc Add os_trim() support for FreeBSD It has the same interface as Linux kernel with a different ioctl name. Signed-off-by: Tomohiro Kusumi Signed-off-by: Jens Axboe --- diff --git a/Makefile b/Makefile index a9cd151f..b54f7e9e 100644 --- a/Makefile +++ b/Makefile @@ -145,6 +145,7 @@ ifeq ($(CONFIG_TARGET_OS), SunOS) CPPFLAGS += -D__EXTENSIONS__ endif ifeq ($(CONFIG_TARGET_OS), FreeBSD) + SOURCE += trim.c LIBS += -lpthread -lrt LDFLAGS += -rdynamic endif diff --git a/os/os-freebsd.h b/os/os-freebsd.h index fa00bb80..ac408c9d 100644 --- a/os/os-freebsd.h +++ b/os/os-freebsd.h @@ -19,6 +19,7 @@ #define FIO_USE_GENERIC_INIT_RANDOM_STATE #define FIO_HAVE_CHARDEV_SIZE #define FIO_HAVE_FS_STAT +#define FIO_HAVE_TRIM #define FIO_HAVE_GETTID #define FIO_HAVE_CPU_AFFINITY @@ -114,6 +115,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, DIOCGDELETE, range)) + return 0; + + return errno; +} + #ifdef MADV_FREE #define FIO_MADV_FREE MADV_FREE #endif