diff options
author | Jeremy Allison <jra@samba.org> | 2010-12-17 23:08:01 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-12-18 08:59:27 +0100 |
commit | 716ea734e4cd83a2030ca2cac10056bdaab1a021 (patch) | |
tree | 8caf80f6c76f5de768896e6d0aebaf3fadbc3116 /source3/modules/vfs_streams_xattr.c | |
parent | 7157221da5bc6787b08ab26c9e83c08208b41d8a (diff) | |
download | samba-716ea734e4cd83a2030ca2cac10056bdaab1a021.tar.gz samba-716ea734e4cd83a2030ca2cac10056bdaab1a021.tar.bz2 samba-716ea734e4cd83a2030ca2cac10056bdaab1a021.zip |
Rename vfs operation posix_fallocate to just fallocate and add the vfs_fallocate_mode parameter.
It turns out we need the fallocate operations to be able to both
allocate and extend filesize, and to allocate and not extend
filesize, and posix_fallocate can only do the former. So by defining
the vfs op as posix_fallocate we lose the opportunity to use any
underlying syscalls (like Linux fallocate) that can do the latter
as well.
We don't currently use the non-extending filesize call, but now
I've changed the vfs op definition we can in the future. For the
moment simply map the fallocate op onto posix_fallocate for the
VFS_FALLOCATE_EXTEND_SIZE case and return ENOSYS for the
VFS_FALLOCATE_KEEP_SIZE case.
Jeremy.
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Sat Dec 18 08:59:27 CET 2010 on sn-devel-104
Diffstat (limited to 'source3/modules/vfs_streams_xattr.c')
-rw-r--r-- | source3/modules/vfs_streams_xattr.c | 9 |
1 files changed, 5 insertions, 4 deletions
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, }; |