From 6876c98c72b8cd3c2e5949965a88552d305a04ed Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 28 Oct 2014 20:40:21 -0600 Subject: [PATCH] engines/glfs_async: add trim support If available. Signed-off-by: Jens Axboe --- configure | 24 +++++++++++++++++++++++- engines/glusterfs_async.c | 5 +++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/configure b/configure index da637a97..de0fc893 100755 --- a/configure +++ b/configure @@ -1261,6 +1261,7 @@ fi ########################################## # check for gfapi fadvise support +if test "$gfapi" = "yes" ; then gf_fadvise="no" cat > $TMPC << EOF #include @@ -1273,11 +1274,29 @@ int main(int argc, char **argv) return 0; } EOF - if compile_prog "" "-lgfapi -lglusterfs" "gfapi"; then gf_fadvise="yes" fi echo "Gluster API use fadvise $gf_fadvise" +fi + +########################################## +# check for gfapi trim support +gf_trim="no" +if test "$gfapi" = "yes" ; then +cat > $TMPC << EOF +#include + +int main(int argc, char **argv) +{ + return glfs_discard_async(NULL, 0, 0); +} +EOF +if compile_prog "" "-lgfapi -lglusterfs" "gf trim"; then + gf_trim="yes" +fi +echo "Gluster API trim support $gf_trim" +fi ########################################## # Check if we support stckf on s390 @@ -1525,6 +1544,9 @@ fi if test "$gf_fadvise" = "yes" ; then output_sym "CONFIG_GF_FADVISE" fi +if test "$gf_trim" = "yes" ; then + output_sym "CONFIG_GF_TRIM" +fi if test "$libhdfs" = "yes" ; then output_sym "CONFIG_LIBHDFS" fi diff --git a/engines/glusterfs_async.c b/engines/glusterfs_async.c index cf6ea709..f2b9818a 100644 --- a/engines/glusterfs_async.c +++ b/engines/glusterfs_async.c @@ -120,6 +120,11 @@ static int fio_gf_async_queue(struct thread_data fio_unused * td, r = glfs_pwrite_async(g->fd, io_u->xfer_buf, io_u->xfer_buflen, io_u->offset, 0, gf_async_cb, (void *)io_u); +#if defined(CONFIG_GF_TRIM) + else if (io_u->ddir == DDIR_TRIM) + r = glfs_discard_async(g->fd, io_u->offset, io_u->xfer_buflen, + gf_async_cb, io_u); +#endif else if (io_u->ddir == DDIR_SYNC) { r = glfs_fsync_async(g->fd, gf_async_cb, (void *)io_u); } else { -- 2.25.1