From 8e57090f7da4027c46176c9786372a00e22df69d Mon Sep 17 00:00:00 2001 From: Emmanuel Dreyfus Date: Thu, 25 Sep 2014 15:28:03 +0200 Subject: Do not forbid fallocate on non Linux systems Linux fallocate() differs from posix_fallocate() by an extra flag that can have the FALLOC_FL_KEEP_SIZE value; Do not test FALLOC_FL_KEEP_SIZE existence to enable fallocate() in posix xlator, as sys_fallocate() in libglusterfs provides support for both implementations. BUG: 1129939 Change-Id: Idf41a0396028a15e81281791bf6912d7fd674e3f Signed-off-by: Emmanuel Dreyfus Reviewed-on: http://review.gluster.org/8856 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- xlators/storage/posix/src/posix.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'xlators/storage/posix') diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index 49dbaadfd03..090e53f0379 100644 --- a/xlators/storage/posix/src/posix.c +++ b/xlators/storage/posix/src/posix.c @@ -572,7 +572,6 @@ 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, @@ -625,7 +624,6 @@ out: return ret; } -#endif /* FALLOC_FL_KEEP_SIZE */ char* _page_aligned_alloc (size_t size, char **aligned_buf) @@ -796,16 +794,14 @@ _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,}; +#ifdef FALLOC_FL_KEEP_SIZE if (keep_size) flags = FALLOC_FL_KEEP_SIZE; +#endif /* FALLOC_FL_KEEP_SIZE */ ret = posix_do_fallocate(frame, this, fd, flags, offset, len, &statpre, &statpost); @@ -816,7 +812,6 @@ _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; } -- cgit