Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 500378 | Differences between
and this patch

Collapse All | Expand All

(-)a/acinclude.m4 (+3 lines)
Lines 917-922 case $AFS_SYSNAME in *_linux* | *_umlinux*) Link Here
917
		 AC_CHECK_LINUX_FUNC([inode_setattr],
917
		 AC_CHECK_LINUX_FUNC([inode_setattr],
918
				     [#include <linux/fs.h>],
918
				     [#include <linux/fs.h>],
919
				     [inode_setattr(NULL, NULL);])
919
				     [inode_setattr(NULL, NULL);])
920
		 AC_CHECK_LINUX_FUNC([iter_file_splice_write],
921
				     [#include <linux/fs.h>],
922
				     [iter_file_splice_write(NULL,NULL,NULL,0,0);])
920
		 AC_CHECK_LINUX_FUNC([kernel_setsockopt],
923
		 AC_CHECK_LINUX_FUNC([kernel_setsockopt],
921
				     [#include <linux/net.h>],
924
				     [#include <linux/net.h>],
922
				     [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
925
				     [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
(-)a/src/afs/LINUX/osi_vnodeops.c (+4 lines)
Lines 812-818 struct file_operations afs_file_fops = { Link Here
812
  .sendfile =   generic_file_sendfile,
812
  .sendfile =   generic_file_sendfile,
813
#endif
813
#endif
814
#if defined(STRUCT_FILE_OPERATIONS_HAS_SPLICE)
814
#if defined(STRUCT_FILE_OPERATIONS_HAS_SPLICE)
815
# if defined(HAVE_LINUX_ITER_FILE_SPLICE_WRITE)
816
  .splice_write = iter_file_splice_write,
817
# else
815
  .splice_write = generic_file_splice_write,
818
  .splice_write = generic_file_splice_write,
819
# endif
816
  .splice_read = generic_file_splice_read,
820
  .splice_read = generic_file_splice_read,
817
#endif
821
#endif
818
  .release =	afs_linux_release,
822
  .release =	afs_linux_release,
819
   Linux 3.16: Convert to new write_iter/read_iter ops
823
   Linux 3.16: Convert to new write_iter/read_iter ops
820
   
824
   
821
   Change read/write operations to the new write_iter/read_iter
825
   Change read/write operations to the new write_iter/read_iter
822
   operations.
826
   operations.
823
   
827
   
824
   Reviewed-on: http://gerrit.openafs.org/11303
828
   Reviewed-on: http://gerrit.openafs.org/11303
825
   Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
829
   Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
826
   Tested-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
830
   Tested-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
827
   Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
831
   Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
828
   Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
832
   Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
829
   (cherry picked from commit a303bb257ed9e790d8c14644779e9508167887b6)
833
   (cherry picked from commit a303bb257ed9e790d8c14644779e9508167887b6)
830
   
834
   
831
   Change-Id: I3f66104be067698a4724ed78537765cf26d4aa10
835
   Change-Id: I3f66104be067698a4724ed78537765cf26d4aa10
832
   Reviewed-on: http://gerrit.openafs.org/11309
836
   Reviewed-on: http://gerrit.openafs.org/11309
833
   Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
837
   Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
834
   Tested-by: BuildBot <buildbot@rampaginggeek.com>
838
   Tested-by: BuildBot <buildbot@rampaginggeek.com>
835
   Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
839
   Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
(-)a/acinclude.m4 (+1 lines)
Lines 836-841 case $AFS_SYSNAME in *_linux* | *_umlinux*) Link Here
836
		 AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
836
		 AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
837
		 AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
837
		 AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
838
		 AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
838
		 AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
839
		 AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h])
839
		 AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
840
		 AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
840
		 AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
841
		 AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
841
		 AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
842
		 AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
(-)a/src/afs/LINUX/osi_vnodeops.c (-5 / +33 lines)
Lines 99-106 afs_linux_VerifyVCache(struct vcache *avc, cred_t **retcred) { Link Here
99
    return afs_convert_code(code);
99
    return afs_convert_code(code);
100
}
100
}
101
101
102
#ifdef HAVE_LINUX_GENERIC_FILE_AIO_READ
102
#if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER) || defined(HAVE_LINUX_GENERIC_FILE_AIO_READ)
103
# ifdef LINUX_HAS_NONVECTOR_AIO
103
# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
104
static ssize_t
105
afs_linux_read_iter(struct kiocb *iocb, struct iov_iter *iter)
106
# elif defined(LINUX_HAS_NONVECTOR_AIO)
104
static ssize_t
107
static ssize_t
105
afs_linux_aio_read(struct kiocb *iocb, char __user *buf, size_t bufsize,
108
afs_linux_aio_read(struct kiocb *iocb, char __user *buf, size_t bufsize,
106
                   loff_t pos)
109
                   loff_t pos)
Lines 113-118 afs_linux_aio_read(struct kiocb *iocb, const struct iovec *buf, Link Here
113
    struct file *fp = iocb->ki_filp;
116
    struct file *fp = iocb->ki_filp;
114
    ssize_t code = 0;
117
    ssize_t code = 0;
115
    struct vcache *vcp = VTOAFS(fp->f_dentry->d_inode);
118
    struct vcache *vcp = VTOAFS(fp->f_dentry->d_inode);
119
# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
120
    loff_t pos = iocb->ki_pos;
121
    unsigned long bufsize = iter->nr_segs;
122
# endif
123
116
124
117
    AFS_GLOCK();
125
    AFS_GLOCK();
118
    afs_Trace4(afs_iclSetp, CM_TRACE_AIOREADOP, ICL_TYPE_POINTER, vcp,
126
    afs_Trace4(afs_iclSetp, CM_TRACE_AIOREADOP, ICL_TYPE_POINTER, vcp,
Lines 125-131 afs_linux_aio_read(struct kiocb *iocb, const struct iovec *buf, Link Here
125
	 * so we optimise by not using it */
133
	 * so we optimise by not using it */
126
	osi_FlushPages(vcp, NULL);	/* ensure stale pages are gone */
134
	osi_FlushPages(vcp, NULL);	/* ensure stale pages are gone */
127
	AFS_GUNLOCK();
135
	AFS_GUNLOCK();
136
# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
137
	code = generic_file_read_iter(iocb, iter);
138
# else
128
	code = generic_file_aio_read(iocb, buf, bufsize, pos);
139
	code = generic_file_aio_read(iocb, buf, bufsize, pos);
140
# endif
129
	AFS_GLOCK();
141
	AFS_GLOCK();
130
    }
142
    }
131
143
Lines 170-177 afs_linux_read(struct file *fp, char *buf, size_t count, loff_t * offp) Link Here
170
 * also take care of re-positioning the pointer if file is open in append
182
 * also take care of re-positioning the pointer if file is open in append
171
 * mode. Call fake open/close to ensure we do writes of core dumps.
183
 * mode. Call fake open/close to ensure we do writes of core dumps.
172
 */
184
 */
173
#ifdef HAVE_LINUX_GENERIC_FILE_AIO_READ
185
#if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER) || defined(HAVE_LINUX_GENERIC_FILE_AIO_READ)
174
# ifdef LINUX_HAS_NONVECTOR_AIO
186
# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
187
static ssize_t
188
afs_linux_write_iter(struct kiocb *iocb, struct iov_iter *iter)
189
# elif defined(LINUX_HAS_NONVECTOR_AIO)
175
static ssize_t
190
static ssize_t
176
afs_linux_aio_write(struct kiocb *iocb, const char __user *buf, size_t bufsize,
191
afs_linux_aio_write(struct kiocb *iocb, const char __user *buf, size_t bufsize,
177
                    loff_t pos)
192
                    loff_t pos)
Lines 184-189 afs_linux_aio_write(struct kiocb *iocb, const struct iovec *buf, Link Here
184
    ssize_t code = 0;
199
    ssize_t code = 0;
185
    struct vcache *vcp = VTOAFS(iocb->ki_filp->f_dentry->d_inode);
200
    struct vcache *vcp = VTOAFS(iocb->ki_filp->f_dentry->d_inode);
186
    cred_t *credp;
201
    cred_t *credp;
202
# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
203
    loff_t pos = iocb->ki_pos;
204
    unsigned long bufsize = iter->nr_segs;
205
# endif
187
206
188
    AFS_GLOCK();
207
    AFS_GLOCK();
189
208
Lines 199-205 afs_linux_aio_write(struct kiocb *iocb, const struct iovec *buf, Link Here
199
    ReleaseWriteLock(&vcp->lock);
218
    ReleaseWriteLock(&vcp->lock);
200
    if (code == 0) {
219
    if (code == 0) {
201
	    AFS_GUNLOCK();
220
	    AFS_GUNLOCK();
221
# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
222
	    code = generic_file_write_iter(iocb, iter);
223
# else
202
	    code = generic_file_aio_write(iocb, buf, bufsize, pos);
224
	    code = generic_file_aio_write(iocb, buf, bufsize, pos);
225
# endif
203
	    AFS_GLOCK();
226
	    AFS_GLOCK();
204
    }
227
    }
205
228
Lines 788-794 struct file_operations afs_dir_fops = { Link Here
788
};
811
};
789
812
790
struct file_operations afs_file_fops = {
813
struct file_operations afs_file_fops = {
791
#ifdef HAVE_LINUX_GENERIC_FILE_AIO_READ
814
#ifdef STRUCT_FILE_OPERATIONS_HAS_READ_ITER
815
  .read_iter =	afs_linux_read_iter,
816
  .write_iter =	afs_linux_write_iter,
817
  .read =	new_sync_read,
818
  .write =	new_sync_write,
819
#elif defined(HAVE_LINUX_GENERIC_FILE_AIO_READ)
792
  .aio_read =	afs_linux_aio_read,
820
  .aio_read =	afs_linux_aio_read,
793
  .aio_write =	afs_linux_aio_write,
821
  .aio_write =	afs_linux_aio_write,
794
  .read =	do_sync_read,
822
  .read =	do_sync_read,

Return to bug 500378