engines/glfs_async: add trim support
If available.
Signed-off-by: Jens Axboe <axboe@fb.com>
diff --git a/configure b/configure
index da637a9..de0fc89 100755
--- a/configure
+++ b/configure
@@ -1261,6 +1261,7 @@
##########################################
# check for gfapi fadvise support
+if test "$gfapi" = "yes" ; then
gf_fadvise="no"
cat > $TMPC << EOF
#include <glusterfs/api/glfs.h>
@@ -1273,11 +1274,29 @@
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 <glusterfs/api/glfs.h>
+
+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 @@
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 cf6ea70..f2b9818 100644
--- a/engines/glusterfs_async.c
+++ b/engines/glusterfs_async.c
@@ -120,6 +120,11 @@
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 {