]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Import upstream patches for linux kernel 3.16
authorBenjamin Kaduk <kaduk@mit.edu>
Mon, 22 Sep 2014 16:53:30 +0000 (12:53 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Mon, 22 Sep 2014 17:15:09 +0000 (13:15 -0400)
debian/changelog
debian/patches/0001-Linux-3.16-Switch-to-iter_file_splice_write.patch [new file with mode: 0644]
debian/patches/0002-Linux-3.16-Convert-to-new-write_iter-read_iter-ops.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]

index 5e2bb1ff44593a760d442b19f8fab684cb7bd8b5..af4d1a15440724d196c677f184088c5b00ce28e3 100644 (file)
@@ -1,9 +1,16 @@
 openafs (1.6.9-2) UNRELEASED; urgency=medium
 
+  [ Russ Allbery ]
   * Retroactively add the CVE for OPENAFS-SA-2014-002 to the changelog for
     1.6.9-1.  It was assigned after the release was uploaded.
   * Add Benjamin Kaduk as Maintainer and move myself to Uploaders.
 
+  [ Benjamin Kaduk ]
+  * Apply upstream deltas to fix the build with the linux kernel 3.16
+    (Closes: #762248):
+    - [ea0c9d8c] Linux 3.16: Switch to iter_file_splice_write
+    - [02a07404] Linux 3.16: Convert to new write_iter/read_iter ops
+
  -- Russ Allbery <rra@debian.org>  Fri, 13 Jun 2014 16:02:57 -0700
 
 openafs (1.6.9-1) unstable; urgency=high
diff --git a/debian/patches/0001-Linux-3.16-Switch-to-iter_file_splice_write.patch b/debian/patches/0001-Linux-3.16-Switch-to-iter_file_splice_write.patch
new file mode 100644 (file)
index 0000000..4b63e52
--- /dev/null
@@ -0,0 +1,56 @@
+From: Marc Dionne <marc.dionne@your-file-system.com>
+Date: Wed, 18 Jun 2014 08:53:48 -0400
+Subject: Linux 3.16: Switch to iter_file_splice_write
+
+Users of generic_file_splice_write need to switch to
+using iter_file_splice_write.
+
+Reviewed-on: http://gerrit.openafs.org/11302
+Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
+Tested-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
+Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
+Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
+(cherry picked from commit e284db57f94c8f97ed1c95dcd0bd9518d86c050c)
+
+Change-Id: I6f88ec0388fe43accc150c7243c1a474c9e643af
+Reviewed-on: http://gerrit.openafs.org/11308
+Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+(cherry picked from commit ae86b07f827d6f3e2032a412f5f6cb3951a27d2d)
+---
+ acinclude.m4                 | 3 +++
+ src/afs/LINUX/osi_vnodeops.c | 4 ++++
+ 2 files changed, 7 insertions(+)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 012d5a4..83a1a8c 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -917,6 +917,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
+                AC_CHECK_LINUX_FUNC([inode_setattr],
+                                    [#include <linux/fs.h>],
+                                    [inode_setattr(NULL, NULL);])
++               AC_CHECK_LINUX_FUNC([iter_file_splice_write],
++                                   [#include <linux/fs.h>],
++                                   [iter_file_splice_write(NULL,NULL,NULL,0,0);])
+                AC_CHECK_LINUX_FUNC([kernel_setsockopt],
+                                    [#include <linux/net.h>],
+                                    [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
+diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
+index 03caf1c..6d1c88d 100644
+--- a/src/afs/LINUX/osi_vnodeops.c
++++ b/src/afs/LINUX/osi_vnodeops.c
+@@ -812,7 +812,11 @@ struct file_operations afs_file_fops = {
+   .sendfile =   generic_file_sendfile,
+ #endif
+ #if defined(STRUCT_FILE_OPERATIONS_HAS_SPLICE)
++# if defined(HAVE_LINUX_ITER_FILE_SPLICE_WRITE)
++  .splice_write = iter_file_splice_write,
++# else
+   .splice_write = generic_file_splice_write,
++# endif
+   .splice_read = generic_file_splice_read,
+ #endif
+   .release =  afs_linux_release,
diff --git a/debian/patches/0002-Linux-3.16-Convert-to-new-write_iter-read_iter-ops.patch b/debian/patches/0002-Linux-3.16-Convert-to-new-write_iter-read_iter-ops.patch
new file mode 100644 (file)
index 0000000..5ae0419
--- /dev/null
@@ -0,0 +1,130 @@
+From: Marc Dionne <marc.dionne@your-file-system.com>
+Date: Wed, 18 Jun 2014 09:06:39 -0400
+Subject: Linux 3.16: Convert to new write_iter/read_iter ops
+
+Change read/write operations to the new write_iter/read_iter
+operations.
+
+Reviewed-on: http://gerrit.openafs.org/11303
+Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
+Tested-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
+Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
+Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
+(cherry picked from commit a303bb257ed9e790d8c14644779e9508167887b6)
+
+Change-Id: I3f66104be067698a4724ed78537765cf26d4aa10
+Reviewed-on: http://gerrit.openafs.org/11309
+Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+(cherry picked from commit f3c0f74186f4a323ffc5f125d961fe384d396cac)
+---
+ acinclude.m4                 |  1 +
+ src/afs/LINUX/osi_vnodeops.c | 38 +++++++++++++++++++++++++++++++++-----
+ 2 files changed, 34 insertions(+), 5 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 83a1a8c..13d70db 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -836,6 +836,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
+                AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
+                AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
+                AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
++               AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h])
+                AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
+                AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
+                AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
+diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
+index 6d1c88d..82f1236 100644
+--- a/src/afs/LINUX/osi_vnodeops.c
++++ b/src/afs/LINUX/osi_vnodeops.c
+@@ -99,8 +99,11 @@ afs_linux_VerifyVCache(struct vcache *avc, cred_t **retcred) {
+     return afs_convert_code(code);
+ }
+-#ifdef HAVE_LINUX_GENERIC_FILE_AIO_READ
+-# ifdef LINUX_HAS_NONVECTOR_AIO
++#if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER) || defined(HAVE_LINUX_GENERIC_FILE_AIO_READ)
++# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
++static ssize_t
++afs_linux_read_iter(struct kiocb *iocb, struct iov_iter *iter)
++# elif defined(LINUX_HAS_NONVECTOR_AIO)
+ static ssize_t
+ afs_linux_aio_read(struct kiocb *iocb, char __user *buf, size_t bufsize,
+                    loff_t pos)
+@@ -113,6 +116,11 @@ afs_linux_aio_read(struct kiocb *iocb, const struct iovec *buf,
+     struct file *fp = iocb->ki_filp;
+     ssize_t code = 0;
+     struct vcache *vcp = VTOAFS(fp->f_dentry->d_inode);
++# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
++    loff_t pos = iocb->ki_pos;
++    unsigned long bufsize = iter->nr_segs;
++# endif
++
+     AFS_GLOCK();
+     afs_Trace4(afs_iclSetp, CM_TRACE_AIOREADOP, ICL_TYPE_POINTER, vcp,
+@@ -125,7 +133,11 @@ afs_linux_aio_read(struct kiocb *iocb, const struct iovec *buf,
+        * so we optimise by not using it */
+       osi_FlushPages(vcp, NULL);      /* ensure stale pages are gone */
+       AFS_GUNLOCK();
++# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
++      code = generic_file_read_iter(iocb, iter);
++# else
+       code = generic_file_aio_read(iocb, buf, bufsize, pos);
++# endif
+       AFS_GLOCK();
+     }
+@@ -170,8 +182,11 @@ afs_linux_read(struct file *fp, char *buf, size_t count, loff_t * offp)
+  * also take care of re-positioning the pointer if file is open in append
+  * mode. Call fake open/close to ensure we do writes of core dumps.
+  */
+-#ifdef HAVE_LINUX_GENERIC_FILE_AIO_READ
+-# ifdef LINUX_HAS_NONVECTOR_AIO
++#if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER) || defined(HAVE_LINUX_GENERIC_FILE_AIO_READ)
++# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
++static ssize_t
++afs_linux_write_iter(struct kiocb *iocb, struct iov_iter *iter)
++# elif defined(LINUX_HAS_NONVECTOR_AIO)
+ static ssize_t
+ afs_linux_aio_write(struct kiocb *iocb, const char __user *buf, size_t bufsize,
+                     loff_t pos)
+@@ -184,6 +199,10 @@ afs_linux_aio_write(struct kiocb *iocb, const struct iovec *buf,
+     ssize_t code = 0;
+     struct vcache *vcp = VTOAFS(iocb->ki_filp->f_dentry->d_inode);
+     cred_t *credp;
++# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
++    loff_t pos = iocb->ki_pos;
++    unsigned long bufsize = iter->nr_segs;
++# endif
+     AFS_GLOCK();
+@@ -199,7 +218,11 @@ afs_linux_aio_write(struct kiocb *iocb, const struct iovec *buf,
+     ReleaseWriteLock(&vcp->lock);
+     if (code == 0) {
+           AFS_GUNLOCK();
++# if defined(STRUCT_FILE_OPERATIONS_HAS_READ_ITER)
++          code = generic_file_write_iter(iocb, iter);
++# else
+           code = generic_file_aio_write(iocb, buf, bufsize, pos);
++# endif
+           AFS_GLOCK();
+     }
+@@ -788,7 +811,12 @@ struct file_operations afs_dir_fops = {
+ };
+ struct file_operations afs_file_fops = {
+-#ifdef HAVE_LINUX_GENERIC_FILE_AIO_READ
++#ifdef STRUCT_FILE_OPERATIONS_HAS_READ_ITER
++  .read_iter =        afs_linux_read_iter,
++  .write_iter =       afs_linux_write_iter,
++  .read =     new_sync_read,
++  .write =    new_sync_write,
++#elif defined(HAVE_LINUX_GENERIC_FILE_AIO_READ)
+   .aio_read = afs_linux_aio_read,
+   .aio_write =        afs_linux_aio_write,
+   .read =     do_sync_read,
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..aa8c90d
--- /dev/null
@@ -0,0 +1,2 @@
+0001-Linux-3.16-Switch-to-iter_file_splice_write.patch
+0002-Linux-3.16-Convert-to-new-write_iter-read_iter-ops.patch