summaryrefslogtreecommitdiff
path: root/source3/modules
diff options
context:
space:
mode:
Diffstat (limited to 'source3/modules')
-rw-r--r--source3/modules/vfs_default.c26
-rw-r--r--source3/modules/vfs_full_audit.c13
-rw-r--r--source3/modules/vfs_streams_xattr.c9
-rw-r--r--source3/modules/vfs_time_audit.c9
4 files changed, 34 insertions, 23 deletions
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 66dd5a912d..e08d48ff5f 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -848,12 +848,13 @@ static int strict_allocate_ftruncate(vfs_handle_struct *handle, files_struct *fs
space_to_write = len - pst->st_ex_size;
- /* for allocation try posix_fallocate first. This can fail on some
+ /* for allocation try fallocate first. This can fail on some
platforms e.g. when the filesystem doesn't support it and no
emulation is being done by the libc (like on AIX with JFS1). In that
- case we do our own emulation. posix_fallocate implementations can
+ case we do our own emulation. fallocate implementations can
return ENOTSUP or EINVAL in cases like that. */
- ret = SMB_VFS_POSIX_FALLOCATE(fsp, pst->st_ex_size, space_to_write);
+ ret = SMB_VFS_FALLOCATE(fsp, VFS_FALLOCATE_EXTEND_SIZE,
+ pst->st_ex_size, space_to_write);
if (ret == ENOSPC) {
errno = ENOSPC;
return -1;
@@ -861,7 +862,7 @@ static int strict_allocate_ftruncate(vfs_handle_struct *handle, files_struct *fs
if (ret == 0) {
return 0;
}
- DEBUG(10,("strict_allocate_ftruncate: SMB_VFS_POSIX_FALLOCATE failed with "
+ DEBUG(10,("strict_allocate_ftruncate: SMB_VFS_FALLOCATE failed with "
"error %d. Falling back to slow manual allocation\n", ret));
/* available disk space is enough or not? */
@@ -953,16 +954,23 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O
return result;
}
-static int vfswrap_posix_fallocate(vfs_handle_struct *handle,
+static int vfswrap_fallocate(vfs_handle_struct *handle,
files_struct *fsp,
+ enum vfs_fallocate_mode mode,
SMB_OFF_T offset,
SMB_OFF_T len)
{
int result;
- START_PROFILE(syscall_posix_fallocate);
- result = sys_posix_fallocate(fsp->fh->fd, offset, len);
- END_PROFILE(syscall_posix_fallocate);
+ START_PROFILE(syscall_fallocate);
+ if (mode == VFS_FALLOCATE_EXTEND_SIZE) {
+ result = sys_posix_fallocate(fsp->fh->fd, offset, len);
+ } else {
+ /* TODO - implement call into Linux fallocate call. */
+ errno = ENOSYS;
+ result = -1;
+ }
+ END_PROFILE(syscall_fallocate);
return result;
}
@@ -1651,7 +1659,7 @@ static struct vfs_fn_pointers vfs_default_fns = {
.getwd = vfswrap_getwd,
.ntimes = vfswrap_ntimes,
.ftruncate = vfswrap_ftruncate,
- .posix_fallocate = vfswrap_posix_fallocate,
+ .fallocate = vfswrap_fallocate,
.lock = vfswrap_lock,
.kernel_flock = vfswrap_kernel_flock,
.linux_setlease = vfswrap_linux_setlease,
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index b7c0888a22..10422fca79 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -124,7 +124,7 @@ typedef enum _vfs_op_type {
SMB_VFS_OP_GETWD,
SMB_VFS_OP_NTIMES,
SMB_VFS_OP_FTRUNCATE,
- SMB_VFS_OP_POSIX_FALLOCATE,
+ SMB_VFS_OP_FALLOCATE,
SMB_VFS_OP_LOCK,
SMB_VFS_OP_KERNEL_FLOCK,
SMB_VFS_OP_LINUX_SETLEASE,
@@ -263,7 +263,7 @@ static struct {
{ SMB_VFS_OP_GETWD, "getwd" },
{ SMB_VFS_OP_NTIMES, "ntimes" },
{ SMB_VFS_OP_FTRUNCATE, "ftruncate" },
- { SMB_VFS_OP_POSIX_FALLOCATE,"posix_fallocate" },
+ { SMB_VFS_OP_FALLOCATE,"fallocate" },
{ SMB_VFS_OP_LOCK, "lock" },
{ SMB_VFS_OP_KERNEL_FLOCK, "kernel_flock" },
{ SMB_VFS_OP_LINUX_SETLEASE, "linux_setlease" },
@@ -1224,15 +1224,16 @@ static int smb_full_audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp
return result;
}
-static int smb_full_audit_posix_fallocate(vfs_handle_struct *handle, files_struct *fsp,
+static int smb_full_audit_fallocate(vfs_handle_struct *handle, files_struct *fsp,
+ enum vfs_fallocate_mode mode,
SMB_OFF_T offset,
SMB_OFF_T len)
{
int result;
- result = SMB_VFS_NEXT_POSIX_FALLOCATE(handle, fsp, offset, len);
+ result = SMB_VFS_NEXT_FALLOCATE(handle, fsp, mode, offset, len);
- do_log(SMB_VFS_OP_POSIX_FALLOCATE, (result >= 0), handle,
+ do_log(SMB_VFS_OP_FALLOCATE, (result >= 0), handle,
"%s", fsp_str_do_log(fsp));
return result;
@@ -2234,7 +2235,7 @@ static struct vfs_fn_pointers vfs_full_audit_fns = {
.getwd = smb_full_audit_getwd,
.ntimes = smb_full_audit_ntimes,
.ftruncate = smb_full_audit_ftruncate,
- .posix_fallocate = smb_full_audit_posix_fallocate,
+ .fallocate = smb_full_audit_fallocate,
.lock = smb_full_audit_lock,
.kernel_flock = smb_full_audit_kernel_flock,
.linux_setlease = smb_full_audit_linux_setlease,
diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c
index 819f33d36e..fb83c5b789 100644
--- a/source3/modules/vfs_streams_xattr.c
+++ b/source3/modules/vfs_streams_xattr.c
@@ -1023,20 +1023,21 @@ static int streams_xattr_ftruncate(struct vfs_handle_struct *handle,
return 0;
}
-static int streams_xattr_posix_fallocate(struct vfs_handle_struct *handle,
+static int streams_xattr_fallocate(struct vfs_handle_struct *handle,
struct files_struct *fsp,
+ enum vfs_fallocate_mode mode,
SMB_OFF_T offset,
SMB_OFF_T len)
{
struct stream_io *sio =
(struct stream_io *)VFS_FETCH_FSP_EXTENSION(handle, fsp);
- DEBUG(10, ("streams_xattr_posix_fallocate called for file %s offset %.0f"
+ DEBUG(10, ("streams_xattr_fallocate called for file %s offset %.0f"
"len = %.0f\n",
fsp_str_dbg(fsp), (double)offset, (double)len));
if (sio == NULL) {
- return SMB_VFS_NEXT_POSIX_FALLOCATE(handle, fsp, offset, len);
+ return SMB_VFS_NEXT_FALLOCATE(handle, fsp, mode, offset, len);
}
if (!streams_xattr_recheck(sio)) {
@@ -1059,7 +1060,7 @@ static struct vfs_fn_pointers vfs_streams_xattr_fns = {
.unlink = streams_xattr_unlink,
.rename = streams_xattr_rename,
.ftruncate = streams_xattr_ftruncate,
- .posix_fallocate = streams_xattr_posix_fallocate,
+ .fallocate = streams_xattr_fallocate,
.streaminfo = streams_xattr_streaminfo,
};
diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c
index e9481b5d67..136807f067 100644
--- a/source3/modules/vfs_time_audit.c
+++ b/source3/modules/vfs_time_audit.c
@@ -905,8 +905,9 @@ static int smb_time_audit_ftruncate(vfs_handle_struct *handle,
return result;
}
-static int smb_time_audit_posix_fallocate(vfs_handle_struct *handle,
+static int smb_time_audit_fallocate(vfs_handle_struct *handle,
files_struct *fsp,
+ enum vfs_fallocate_mode mode,
SMB_OFF_T offset,
SMB_OFF_T len)
{
@@ -915,12 +916,12 @@ static int smb_time_audit_posix_fallocate(vfs_handle_struct *handle,
double timediff;
clock_gettime_mono(&ts1);
- result = SMB_VFS_NEXT_POSIX_FALLOCATE(handle, fsp, offset, len);
+ result = SMB_VFS_NEXT_FALLOCATE(handle, fsp, mode, offset, len);
clock_gettime_mono(&ts2);
timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
if (timediff > audit_timeout) {
- smb_time_audit_log("posix_fallocate", timediff);
+ smb_time_audit_log("fallocate", timediff);
}
return result;
@@ -2357,7 +2358,7 @@ static struct vfs_fn_pointers vfs_time_audit_fns = {
.getwd = smb_time_audit_getwd,
.ntimes = smb_time_audit_ntimes,
.ftruncate = smb_time_audit_ftruncate,
- .posix_fallocate = smb_time_audit_posix_fallocate,
+ .fallocate = smb_time_audit_fallocate,
.lock = smb_time_audit_lock,
.kernel_flock = smb_time_audit_kernel_flock,
.linux_setlease = smb_time_audit_linux_setlease,