diff options
Diffstat (limited to 'xlators/storage')
| -rw-r--r-- | xlators/storage/posix/src/posix.c | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index de785420555..1a344acbb5a 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  | 
