summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-05-04 15:47:42 +0200
committerVolker Lendecke <vl@samba.org>2011-05-04 16:11:30 +0200
commit41bde55821a6c18ace24330aede8d4928215e658 (patch)
treecba82b80b69dde9ee1c2cae3e71d16bfc40937ae /source3
parent2329fb56a701804585d866817586b4d567966b92 (diff)
downloadsamba-41bde55821a6c18ace24330aede8d4928215e658.tar.gz
samba-41bde55821a6c18ace24330aede8d4928215e658.tar.bz2
samba-41bde55821a6c18ace24330aede8d4928215e658.zip
vfs_gpfs: Block sendfile for offline files
Diffstat (limited to 'source3')
-rw-r--r--source3/modules/vfs_gpfs.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index e8d8bd38ae..7d5d199405 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -1235,6 +1235,17 @@ static bool vfs_gpfs_aio_force(struct vfs_handle_struct *handle,
return vfs_gpfs_is_offline(handle, fsp->fsp_name, &fsp->fsp_name->st);
}
+static ssize_t vfs_gpfs_sendfile(vfs_handle_struct *handle, int tofd,
+ files_struct *fsp, const DATA_BLOB *hdr,
+ SMB_OFF_T offset, size_t n)
+{
+ if ((fsp->fsp_name->st.vfs_private & GPFS_WINATTR_OFFLINE) != 0) {
+ errno = ENOSYS;
+ return -1;
+ }
+ return SMB_VFS_NEXT_SENDFILE(handle, tofd, fsp, hdr, offset, n);
+}
+
int vfs_gpfs_connect(struct vfs_handle_struct *handle, const char *service,
const char *user)
{
@@ -1314,6 +1325,7 @@ static struct vfs_fn_pointers vfs_gpfs_fns = {
.ntimes = vfs_gpfs_ntimes,
.is_offline = vfs_gpfs_is_offline,
.aio_force = vfs_gpfs_aio_force,
+ .sendfile = vfs_gpfs_sendfile,
.ftruncate = vfs_gpfs_ftruncate
};