-#if defined(HAVE_FALLOCATE) && (defined(FALLOC_FL_ZERO_RANGE) || \
- (defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)))
-#if defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)
- ret = fallocate(data->dev,
- FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
- (off_t)(block) * channel->block_size + data->offset,
- (off_t)(count) * channel->block_size);
- if (ret == 0)
- goto err;
-#endif
-#ifdef FALLOC_FL_ZERO_RANGE
- ret = fallocate(data->dev,
- FALLOC_FL_ZERO_RANGE,
- (off_t)(block) * channel->block_size + data->offset,
- (off_t)(count) * channel->block_size);
-#endif
-#else
- goto unimplemented;
-#endif /* HAVE_FALLOCATE && (ZERO_RANGE || (PUNCH_HOLE && KEEP_SIZE)) */