[Ocfs2-devel] [PATCH 28/30] ocfs2: Handle missing
__splice_from_pipe()
Joel Becker
Joel.Becker at oracle.com
Mon Dec 24 13:28:44 PST 2007
On Thu, Dec 20, 2007 at 03:29:45PM -0800, Sunil Mushran wrote:
> Commit c66ab6fa705e1b2887a6d9246b798bdc526839e2 in mainline introduced
> __splice_from_pipe(). This patch allows one to build ocfs2 with kernels
> having/not having this change.
Can we reverse the test?
Joel
> Note: This patch disables splice io for kernels not providing
> __splice_from_pipe(). We will later add a patch to enable splice
> io with such kernels too.
>
> Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
> ---
> Config.make.in | 1 +
> configure.in | 5 +++++
> fs/ocfs2/Makefile | 4 ++++
> fs/ocfs2/file.c | 4 ++++
> 4 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/Config.make.in b/Config.make.in
> index f99b9f4..89c1e94 100644
> --- a/Config.make.in
> +++ b/Config.make.in
> @@ -72,6 +72,7 @@ FAULT_IN_VMOPS = @FAULT_IN_VMOPS@
> SOP_IS_CONST = @SOP_IS_CONST@
> IOP_IS_CONST = @IOP_IS_CONST@
> VECTORED_FILE_AIO = @VECTORED_FILE_AIO@
> +SPLICE_FROM_PIPE = @SPLICE_FROM_PIPE@
>
> OCFS_DEBUG = @OCFS_DEBUG@
>
> diff --git a/configure.in b/configure.in
> index 741dfdb..021b925 100644
> --- a/configure.in
> +++ b/configure.in
> @@ -287,6 +287,11 @@ OCFS2_CHECK_KERNEL([aio_read() in struct file_operations using iovec in fs.h], f
> VECTORED_FILE_AIO=yes, , [ssize_t (\*aio_read) (struct kiocb \*, const struct iovec \*, unsigned long, loff_t);])
> AC_SUBST(VECTORED_FILE_AIO)
>
> +SPLICE_FROM_PIPE=
> +OCFS2_CHECK_KERNEL([__splice_from_pipe() in splice.h], splice.h,
> + SPLICE_FROM_PIPE=yes, , [^extern ssize_t __splice_from_pipe(struct pipe_inode_info \*])
> +AC_SUBST(SPLICE_FROM_PIPE)
> +
> # using -include has two advantages:
> # the source doesn't need to know to include compat headers
> # the compat header file names don't go through the search path
> diff --git a/fs/ocfs2/Makefile b/fs/ocfs2/Makefile
> index 80fd6c6..e4296d3 100644
> --- a/fs/ocfs2/Makefile
> +++ b/fs/ocfs2/Makefile
> @@ -77,6 +77,10 @@ ifdef VECTORED_FILE_AIO
> EXTRA_CFLAGS += -DVECTORED_FILE_AIO
> endif
>
> +ifdef SPLICE_FROM_PIPE
> +EXTRA_CFLAGS += -DSPLICE_FROM_PIPE
> +endif
> +
> #
> # Since SUBDIRS means something to kbuild, define them safely. Do not
> # include trailing slashes.
> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
> index 1ee2a79..e022c97 100644
> --- a/fs/ocfs2/file.c
> +++ b/fs/ocfs2/file.c
> @@ -2258,6 +2258,7 @@ out_sems:
> return written ? written : ret;
> }
>
> +#ifdef SPLICE_FROM_PIPE
> static int ocfs2_splice_write_actor(struct pipe_inode_info *pipe,
> struct pipe_buffer *buf,
> struct splice_desc *sd)
> @@ -2406,6 +2407,7 @@ bail:
> mlog_exit(ret);
> return ret;
> }
> +#endif
>
> #ifdef VECTORED_FILE_AIO
> static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
> @@ -2530,8 +2532,10 @@ const struct file_operations ocfs2_fops = {
> #ifdef CONFIG_COMPAT
> .compat_ioctl = ocfs2_compat_ioctl,
> #endif
> +#ifdef SPLICE_FROM_PIPE
> .splice_read = ocfs2_file_splice_read,
> .splice_write = ocfs2_file_splice_write,
> +#endif
> };
>
> const struct file_operations ocfs2_dops = {
> --
> 1.5.2.5
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
--
"Maybe the time has drawn the faces I recall.
But things in this life change very slowly,
If they ever change at all."
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127
More information about the Ocfs2-devel
mailing list