[Ocfs2-devel] Re: [patch 3/5] ocfs2: Add check for const file_operations

Sunil Mushran Sunil.Mushran at oracle.com
Fri Feb 1 15:37:02 PST 2008


Jeff Mahoney wrote:
>  SLES10 doesn't have a const f_op in struct file. This patch adds a check.
>
> Signed-off-by: Jeff Mahoney <jeffm at suse.com>
>   

Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>

> ---
>
>  Config.make.in        |    1 +
>  configure.in          |    5 +++++
>  fs/ocfs2/Makefile     |    4 ++++
>  fs/ocfs2/dlm/Makefile |    4 ++++
>  fs/ocfs2/dlm/dlmfs.c  |    8 ++++++++
>  fs/ocfs2/dlmglue.c    |    4 ++++
>  fs/ocfs2/file.c       |    8 ++++++++
>  fs/ocfs2/file.h       |    5 +++++
>  8 files changed, 39 insertions(+)
>
> diff --git a/Config.make.in b/Config.make.in
> index 5b58fe1..dc5431b 100644
> --- a/Config.make.in
> +++ b/Config.make.in
> @@ -72,6 +72,7 @@ NO_SHOULD_REMOVE_SUID = @NO_SHOULD_REMOVE_SUID@
>  NO_GENERIC_SEGMENT_CHECKS = @NO_GENERIC_SEGMENT_CHECKS@
>  SOP_IS_NOT_CONST = @SOP_IS_NOT_CONST@
>  IOP_IS_NOT_CONST = @IOP_IS_NOT_CONST@
> +FOP_IS_NOT_CONST = @FOP_IS_NOT_CONST@
>  NO_VECTORIZED_AIO = @NO_VECTORIZED_AIO@
>  NO_SPLICE_FROM_PIPE = @NO_SPLICE_FROM_PIPE@
>  OLD_BIO_END_IO = @OLD_BIO_END_IO@
> diff --git a/configure.in b/configure.in
> index d1ebeae..3d9e49f 100644
> --- a/configure.in
> +++ b/configure.in
> @@ -305,6 +305,11 @@ OCFS2_CHECK_KERNEL([i_op declared as const in struct inode in fs.h], fs.h,
>    , IOP_IS_NOT_CONST=yes, [^.*const struct inode_operations.*\*i_op;])
>  AC_SUBST(IOP_IS_NOT_CONST)
>  
> +FOP_IS_NOT_CONST=
> +OCFS2_CHECK_KERNEL([f_op declared as const in struct file in fs.h], fs.h,
> +  , FOP_IS_NOT_CONST=yes, [^.*const struct file_operations.*\*f_op;])
> +AC_SUBST(FOP_IS_NOT_CONST)
> +
>  NO_VECTORIZED_AIO=
>  OCFS2_CHECK_KERNEL([aio_read() in struct file_operations using iovec in fs.h], fs.h,
>    , NO_VECTORIZED_AIO=yes, [ssize_t (\*aio_read) (struct kiocb \*, const struct iovec \*, unsigned long, loff_t);])
> diff --git a/fs/ocfs2/Makefile b/fs/ocfs2/Makefile
> index b53630d..5750280 100644
> --- a/fs/ocfs2/Makefile
> +++ b/fs/ocfs2/Makefile
> @@ -84,6 +84,10 @@ ifdef IOP_IS_NOT_CONST
>  EXTRA_CFLAGS += -DIOP_IS_NOT_CONST
>  endif
>  
> +ifdef FOP_IS_NOT_CONST
> +EXTRA_CFLAGS += -DFOP_IS_NOT_CONST
> +endif
> +
>  ifdef NO_VECTORIZED_AIO
>  CFLAGS_file.o += -DNO_VECTORIZED_AIO
>  endif
> diff --git a/fs/ocfs2/dlm/Makefile b/fs/ocfs2/dlm/Makefile
> index 74bd019..4b718cf 100644
> --- a/fs/ocfs2/dlm/Makefile
> +++ b/fs/ocfs2/dlm/Makefile
> @@ -46,6 +46,10 @@ ifdef IOP_IS_NOT_CONST
>  EXTRA_CFLAGS += -DIOP_IS_NOT_CONST
>  endif
>  
> +ifdef FOP_IS_NOT_CONST
> +EXTRA_CFLAGS += -DFOP_IS_NOT_CONST
> +endif
> +
>  ifdef NO_VFSMOUNT_IN_GET_SB_BDEV
>  EXTRA_CFLAGS += -DNO_VFSMOUNT_IN_GET_SB_BDEV
>  endif
> diff --git a/fs/ocfs2/dlm/dlmfs.c b/fs/ocfs2/dlm/dlmfs.c
> index ba35f76..f7e0263 100644
> --- a/fs/ocfs2/dlm/dlmfs.c
> +++ b/fs/ocfs2/dlm/dlmfs.c
> @@ -65,7 +65,11 @@ static struct super_operations dlmfs_ops;
>  #else
>  static const struct super_operations dlmfs_ops;
>  #endif
> +#ifdef FOP_IS_NOT_CONST
> +static struct file_operations dlmfs_file_operations;
> +#else
>  static const struct file_operations dlmfs_file_operations;
> +#endif
>  #ifdef IOP_IS_NOT_CONST
>  static struct inode_operations dlmfs_dir_inode_operations;
>  static struct inode_operations dlmfs_root_inode_operations;
> @@ -546,7 +550,11 @@ static int dlmfs_fill_super(struct super_block * sb,
>  	return 0;
>  }
>  
> +#ifdef FOP_IS_NOT_CONST
> +static struct file_operations dlmfs_file_operations = {
> +#else
>  static const struct file_operations dlmfs_file_operations = {
> +#endif
>  	.open		= dlmfs_file_open,
>  	.release	= dlmfs_file_release,
>  	.read		= dlmfs_file_read,
> diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
> index 9ce2881..04f9ec3 100644
> --- a/fs/ocfs2/dlmglue.c
> +++ b/fs/ocfs2/dlmglue.c
> @@ -2441,7 +2441,11 @@ out:
>  	return ret;
>  }
>  
> +#ifdef FOP_IS_NOT_CONST
> +static struct file_operations ocfs2_dlm_debug_fops = {
> +#else
>  static const struct file_operations ocfs2_dlm_debug_fops = {
> +#endif
>  	.open =		ocfs2_dlm_debug_open,
>  	.release =	ocfs2_dlm_debug_release,
>  	.read =		seq_read,
> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
> index 40122fe..e068a76 100644
> --- a/fs/ocfs2/file.c
> +++ b/fs/ocfs2/file.c
> @@ -2488,7 +2488,11 @@ const struct inode_operations ocfs2_special_file_iops = {
>  	.permission	= ocfs2_permission,
>  };
>  
> +#ifdef FOP_IS_NOT_CONST
> +struct file_operations ocfs2_fops = {
> +#else
>  const struct file_operations ocfs2_fops = {
> +#endif
>  	.llseek		= generic_file_llseek,
>  	.read		= do_sync_read,
>  	.write		= do_sync_write,
> @@ -2509,7 +2513,11 @@ const struct file_operations ocfs2_fops = {
>  #endif
>  };
>  
> +#ifdef FOP_IS_NOT_CONST
> +struct file_operations ocfs2_dops = {
> +#else
>  const struct file_operations ocfs2_dops = {
> +#endif
>  	.llseek		= generic_file_llseek,
>  	.read		= generic_read_dir,
>  	.readdir	= ocfs2_readdir,
> diff --git a/fs/ocfs2/file.h b/fs/ocfs2/file.h
> index 8cf0821..2b118b8 100644
> --- a/fs/ocfs2/file.h
> +++ b/fs/ocfs2/file.h
> @@ -26,8 +26,13 @@
>  #ifndef OCFS2_FILE_H
>  #define OCFS2_FILE_H
>  
> +#ifdef FOP_IS_NOT_CONST
> +extern struct file_operations ocfs2_fops;
> +extern struct file_operations ocfs2_dops;
> +#else
>  extern const struct file_operations ocfs2_fops;
>  extern const struct file_operations ocfs2_dops;
> +#endif
>  #ifdef IOP_IS_NOT_CONST
>  extern struct inode_operations ocfs2_file_iops;
>  extern struct inode_operations ocfs2_special_file_iops;
>
>
>   




More information about the Ocfs2-devel mailing list