[Ocfs2-devel] [patch 4/5] ocfs2: Add check for const
address_space_operations
Jeff Mahoney
jeffm at suse.com
Thu Jan 31 12:44:42 PST 2008
SLES10 doesn't have a const a_ops in struct address_space. This patch adds
a check.
Signed-off-by: Jeff Mahoney <jeffm at suse.com>
---
Config.make.in | 1 +
configure.in | 5 +++++
fs/ocfs2/Makefile | 4 ++++
fs/ocfs2/aops.c | 4 ++++
fs/ocfs2/inode.h | 4 ++++
5 files changed, 18 insertions(+)
diff --git a/Config.make.in b/Config.make.in
index dc5431b..98bf410 100644
--- a/Config.make.in
+++ b/Config.make.in
@@ -73,6 +73,7 @@ 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@
+AOPS_IS_NOT_CONST = @AOPS_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 3d9e49f..a4b3f0e 100644
--- a/configure.in
+++ b/configure.in
@@ -310,6 +310,11 @@ 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)
+AOPS_IS_NOT_CONST=
+OCFS2_CHECK_KERNEL([a_ops declared as const in struct address_space in fs.h], fs.h,
+ , AOPS_IS_NOT_CONST=yes, [^.*const struct address_space_operations.*\*a_ops;])
+AC_SUBST(AOPS_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 5750280..c8a81c4 100644
--- a/fs/ocfs2/Makefile
+++ b/fs/ocfs2/Makefile
@@ -88,6 +88,10 @@ ifdef FOP_IS_NOT_CONST
EXTRA_CFLAGS += -DFOP_IS_NOT_CONST
endif
+ifdef AOPS_IS_NOT_CONST
+EXTRA_CFLAGS += -DAOPS_IS_NOT_CONST
+endif
+
ifdef NO_VECTORIZED_AIO
CFLAGS_file.o += -DNO_VECTORIZED_AIO
endif
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 54dd079..9b2a743 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -1953,7 +1953,11 @@ int ocfs2_write_end(struct file *file, struct address_space *mapping,
return ret;
}
+#ifdef AOPS_IS_NOT_CONST
+struct address_space_operations ocfs2_aops = {
+#else
const struct address_space_operations ocfs2_aops = {
+#endif
.readpage = ocfs2_readpage,
.readpages = ocfs2_readpages,
.writepage = ocfs2_writepage,
diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h
index 390a855..01437ca 100644
--- a/fs/ocfs2/inode.h
+++ b/fs/ocfs2/inode.h
@@ -111,7 +111,11 @@ static inline struct ocfs2_inode_info *OCFS2_I(struct inode *inode)
extern struct kmem_cache *ocfs2_inode_cache;
+#ifdef AOPS_IS_NOT_CONST
+extern struct address_space_operations ocfs2_aops;
+#else
extern const struct address_space_operations ocfs2_aops;
+#endif
struct buffer_head *ocfs2_bread(struct inode *inode, int block,
int *err, int reada);
More information about the Ocfs2-devel
mailing list