summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
Diffstat (limited to 'xlators')
-rw-r--r--xlators/storage/posix/src/posix.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
index de7854205..1a344acbb 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -564,6 +564,7 @@ out:
return 0;
}
+#ifdef FALLOC_FL_KEEP_SIZE
static int32_t
posix_do_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags,
off_t offset, size_t len, struct iatt *statpre,
@@ -616,6 +617,7 @@ out:
return ret;
}
+#endif /* FALLOC_FL_KEEP_SIZE */
char*
_page_aligned_alloc (size_t size, char **aligned_buf)
@@ -786,6 +788,10 @@ _posix_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t keep_siz
off_t offset, size_t len, dict_t *xdata)
{
int32_t ret;
+#ifndef FALLOC_FL_KEEP_SIZE
+ ret = EOPNOTSUPP;
+
+#else /* FALLOC_FL_KEEP_SIZE */
int32_t flags = 0;
struct iatt statpre = {0,};
struct iatt statpost = {0,};
@@ -802,6 +808,7 @@ _posix_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t keep_siz
return 0;
err:
+#endif /* FALLOC_FL_KEEP_SIZE */
STACK_UNWIND_STRICT(fallocate, frame, -1, -ret, NULL, NULL, NULL);
return 0;
}
@@ -811,6 +818,10 @@ posix_discard(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
size_t len, dict_t *xdata)
{
int32_t ret;
+#ifndef FALLOC_FL_KEEP_SIZE
+ ret = EOPNOTSUPP;
+
+#else /* FALLOC_FL_KEEP_SIZE */
int32_t flags = FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE;
struct iatt statpre = {0,};
struct iatt statpost = {0,};
@@ -824,9 +835,9 @@ posix_discard(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
return 0;
err:
+#endif /* FALLOC_FL_KEEP_SIZE */
STACK_UNWIND_STRICT(discard, frame, -1, -ret, NULL, NULL, NULL);
return 0;
-
}
static int32_t