##########################################
# check for gfapi fadvise support
+if test "$gfapi" = "yes" ; then
gf_fadvise="no"
cat > $TMPC << EOF
#include <glusterfs/api/glfs.h>
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
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
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 {