mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
vfs_glusterfs: Add fallocate support for vfs_glusterfs
Adds fallocate support to the vfs glusterfs plugin. v2: Add check for glusterfs-api version. RHBZ: 1478875 Bug: https://bugzilla.samba.org/show_bug.cgi?id=13303 Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> Reviewed-by: David Disseldorp <ddiss@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Wed Jan 17 06:09:29 CET 2018 on sn-devel-144 (cherry picked from commit 0edce86e97a49f4bd79f4431015ac2b788105e46)
This commit is contained in:
parent
a46dc61351
commit
4d47c72206
@ -464,6 +464,10 @@ static uint32_t vfs_gluster_fs_capabilities(struct vfs_handle_struct *handle,
|
||||
{
|
||||
uint32_t caps = FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
|
||||
|
||||
#ifdef HAVE_GFAPI_VER_6
|
||||
caps |= FILE_SUPPORTS_SPARSE_FILES;
|
||||
#endif
|
||||
|
||||
#ifdef STAT_HAVE_NSEC
|
||||
*p_ts_res = TIMESTAMP_SET_NT_OR_BETTER;
|
||||
#endif
|
||||
@ -1148,9 +1152,31 @@ static int vfs_gluster_fallocate(struct vfs_handle_struct *handle,
|
||||
uint32_t mode,
|
||||
off_t offset, off_t len)
|
||||
{
|
||||
/* TODO: add support using glfs_fallocate() and glfs_zerofill() */
|
||||
#ifdef HAVE_GFAPI_VER_6
|
||||
int keep_size, punch_hole;
|
||||
|
||||
keep_size = mode & VFS_FALLOCATE_FL_KEEP_SIZE;
|
||||
punch_hole = mode & VFS_FALLOCATE_FL_PUNCH_HOLE;
|
||||
|
||||
mode &= ~(VFS_FALLOCATE_FL_KEEP_SIZE|VFS_FALLOCATE_FL_PUNCH_HOLE);
|
||||
if (mode != 0) {
|
||||
errno = ENOTSUP;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (punch_hole) {
|
||||
return glfs_discard(*(glfs_fd_t **)
|
||||
VFS_FETCH_FSP_EXTENSION(handle, fsp),
|
||||
offset, len);
|
||||
}
|
||||
|
||||
return glfs_fallocate(*(glfs_fd_t **)
|
||||
VFS_FETCH_FSP_EXTENSION(handle, fsp),
|
||||
keep_size, offset, len);
|
||||
#else
|
||||
errno = ENOTSUP;
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct smb_filename *vfs_gluster_realpath(struct vfs_handle_struct *handle,
|
||||
|
@ -1575,6 +1575,10 @@ main() {
|
||||
conf.undefine('HAVE_GLUSTERFS')
|
||||
else:
|
||||
conf.undefine('HAVE_GLUSTERFS')
|
||||
|
||||
conf.CHECK_CFG(package='glusterfs-api', args='"glusterfs-api >= 6" --cflags --libs',
|
||||
msg='Checking for glusterfs-api >= 6',
|
||||
uselib_store="GFAPI_VER_6")
|
||||
else:
|
||||
conf.SET_TARGET_TYPE('gfapi', 'EMPTY')
|
||||
conf.undefine('HAVE_GLUSTERFS')
|
||||
|
Loading…
x
Reference in New Issue
Block a user