vfs_gpfs: Block sendfile for offline files
authorVolker Lendecke <vl@samba.org>
Wed, 4 May 2011 13:47:42 +0000 (15:47 +0200)
committerKarolin Seeger <kseeger@samba.org>
Sun, 15 May 2011 18:17:13 +0000 (20:17 +0200)
(cherry picked from commit 41bde55821a6c18ace24330aede8d4928215e658)
(cherry picked from commit c2c29533fc4a7467130dff0582249cccc49e001e)

source3/modules/vfs_gpfs.c

index e8d8bd38aeb02d018460ce2f405b064b27a3c106..7d5d19940538dc17384612a48c483e6a763e27e4 100644 (file)
@@ -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
 };