2009-12-14 00:19:37

by Emese Revfy

[permalink] [raw]
Subject: [PATCH 0/1] Constify struct extent_io_ops for 2.6.32-git-053fe57ac v2

From: Emese Revfy <[email protected]>

Hello everyone!

The following patch series attempts to constify several structures
that hold function pointers. This is only the initial batch, there
are about over 150 candidate structures, some of which can be
constified as well, I plan to submit them in the future.

The list of constified structures in this series (* marks this thread):
acpi_dock_ops
address_space_operations
backlight_ops
block_device_operations
dma_map_ops
* extent_io_ops
file_lock_operations
file_operations
hv_ops
intel_dvo_dev_ops
item_operations
iwl_ops
kgdb_arch
kgdb_io
kset_uevent_ops
lock_manager_operations
microcode_ops
mtrr_ops
neigh_ops
nlmsvc_binding
pci_raw_ops
platform_hibernation_ops
platform_suspend_ops
snd_ac97_build_ops
sysfs_ops
usb_mon_operations
wd_ops

There are certain exceptions where a given instance of the structure
cannot be const, they are marked with a comment in the patch.

The patches compile fine with an allyesconfig kernel on i386 and x86_64.

Please let me know if any of these structures should not be constified
and any other issues you see with them.


Changelog:
----------
v1 -> v2
- updated to linus-git-053fe57
- extended comments with a reference to code that prevents constification
- split up patches by subsystem as suggested by Greg KH, Jiri Slaby
- added all Acked-by's received so far
- removed patch for super_operations for now
- removed patch for ptmx_fops

Thanks,
Emese

fs/btrfs/disk-io.c | 4 ++--
fs/btrfs/extent_io.h | 30 +++++++++++++++---------------
fs/btrfs/inode.c | 4 ++--
3 files changed, 19 insertions(+), 19 deletions(-)


2009-12-14 00:18:40

by Emese Revfy

[permalink] [raw]
Subject: [PATCH 1/1] Constify struct extent_io_ops for 2.6.32-git-053fe57ac v2

From: Emese Revfy <[email protected]>

Chris, can you please ack it or include it in your tree (and let me know)?

Signed-off-by: Emese Revfy <[email protected]>
---
fs/btrfs/disk-io.c | 4 ++--
fs/btrfs/extent_io.h | 30 +++++++++++++++---------------
fs/btrfs/inode.c | 4 ++--
3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 02b6afb..6c78215 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -39,7 +39,7 @@
#include "tree-log.h"
#include "free-space-cache.h"

-static struct extent_io_ops btree_extent_io_ops;
+static const struct extent_io_ops btree_extent_io_ops;
static void end_workqueue_fn(struct btrfs_work *work);
static void free_fs_root(struct btrfs_root *root);

@@ -2585,7 +2585,7 @@ out:
return 0;
}

-static struct extent_io_ops btree_extent_io_ops = {
+static const struct extent_io_ops btree_extent_io_ops = {
.write_cache_pages_lock_hook = btree_lock_page_hook,
.readpage_end_io_hook = btree_readpage_end_io_hook,
.submit_bio_hook = btree_submit_bio_hook,
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h
index 36de250..7ec75c7 100644
--- a/fs/btrfs/extent_io.h
+++ b/fs/btrfs/extent_io.h
@@ -49,36 +49,36 @@ typedef int (extent_submit_bio_hook_t)(struct inode *inode, int rw,
struct bio *bio, int mirror_num,
unsigned long bio_flags);
struct extent_io_ops {
- int (*fill_delalloc)(struct inode *inode, struct page *locked_page,
+ int (* const fill_delalloc)(struct inode *inode, struct page *locked_page,
u64 start, u64 end, int *page_started,
unsigned long *nr_written);
- int (*writepage_start_hook)(struct page *page, u64 start, u64 end);
- int (*writepage_io_hook)(struct page *page, u64 start, u64 end);
+ int (* const writepage_start_hook)(struct page *page, u64 start, u64 end);
+ int (* const writepage_io_hook)(struct page *page, u64 start, u64 end);
extent_submit_bio_hook_t *submit_bio_hook;
- int (*merge_bio_hook)(struct page *page, unsigned long offset,
+ int (* const merge_bio_hook)(struct page *page, unsigned long offset,
size_t size, struct bio *bio,
unsigned long bio_flags);
- int (*readpage_io_hook)(struct page *page, u64 start, u64 end);
- int (*readpage_io_failed_hook)(struct bio *bio, struct page *page,
+ int (* const readpage_io_hook)(struct page *page, u64 start, u64 end);
+ int (* const readpage_io_failed_hook)(struct bio *bio, struct page *page,
u64 start, u64 end,
struct extent_state *state);
- int (*writepage_io_failed_hook)(struct bio *bio, struct page *page,
+ int (* const writepage_io_failed_hook)(struct bio *bio, struct page *page,
u64 start, u64 end,
struct extent_state *state);
- int (*readpage_end_io_hook)(struct page *page, u64 start, u64 end,
+ int (* const readpage_end_io_hook)(struct page *page, u64 start, u64 end,
struct extent_state *state);
- int (*writepage_end_io_hook)(struct page *page, u64 start, u64 end,
+ int (* const writepage_end_io_hook)(struct page *page, u64 start, u64 end,
struct extent_state *state, int uptodate);
- int (*set_bit_hook)(struct inode *inode, u64 start, u64 end,
+ int (* const set_bit_hook)(struct inode *inode, u64 start, u64 end,
unsigned long old, unsigned long bits);
- int (*clear_bit_hook)(struct inode *inode, struct extent_state *state,
+ int (* const clear_bit_hook)(struct inode *inode, struct extent_state *state,
unsigned long bits);
- int (*merge_extent_hook)(struct inode *inode,
+ int (* const merge_extent_hook)(struct inode *inode,
struct extent_state *new,
struct extent_state *other);
- int (*split_extent_hook)(struct inode *inode,
+ int (* const split_extent_hook)(struct inode *inode,
struct extent_state *orig, u64 split);
- int (*write_cache_pages_lock_hook)(struct page *page);
+ int (* const write_cache_pages_lock_hook)(struct page *page);
};

struct extent_io_tree {
@@ -88,7 +88,7 @@ struct extent_io_tree {
u64 dirty_bytes;
spinlock_t lock;
spinlock_t buffer_lock;
- struct extent_io_ops *ops;
+ const struct extent_io_ops *ops;
};

struct extent_state {
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b3ad168..3453cba 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -63,7 +63,7 @@ static const struct inode_operations btrfs_file_inode_operations;
static const struct address_space_operations btrfs_aops;
static const struct address_space_operations btrfs_symlink_aops;
static const struct file_operations btrfs_dir_file_operations;
-static struct extent_io_ops btrfs_extent_io_ops;
+static const struct extent_io_ops btrfs_extent_io_ops;

static struct kmem_cache *btrfs_inode_cachep;
struct kmem_cache *btrfs_trans_handle_cachep;
@@ -5854,7 +5854,7 @@ static const struct file_operations btrfs_dir_file_operations = {
.fsync = btrfs_sync_file,
};

-static struct extent_io_ops btrfs_extent_io_ops = {
+static const struct extent_io_ops btrfs_extent_io_ops = {
.fill_delalloc = run_delalloc_range,
.submit_bio_hook = btrfs_submit_bio_hook,
.merge_bio_hook = btrfs_merge_bio_hook,
--
1.6.5.3