diff options
author | David Chinner <dgc@sgi.com> | 2007-02-10 02:34:56 -0500 |
---|---|---|
committer | Tim Shimmin <tes@sgi.com> | 2007-02-10 02:34:56 -0500 |
commit | 7989cb8ef5dbc1411d3be48218c7b25ef6e71699 (patch) | |
tree | 607efa745911951a30712de44a837c1df952bd3a | |
parent | 5e6a07dfe404cd4d8494d842b54706cb007fa04b (diff) |
[XFS] Keep stack usage down for 4k stacks by using noinline.
gcc-4.1 and more recent aggressively inline static functions which
increases XFS stack usage by ~15% in critical paths. Prevent this from
occurring by adding noinline to the STATIC definition.
Also uninline some functions that are too large to be inlined and were
causing problems with CONFIG_FORCED_INLINING=y.
Finally, clean up all the different users of inline, __inline and
__inline__ and put them under one STATIC_INLINE macro. For debug kernels
the STATIC_INLINE macro uninlines those functions.
SGI-PV: 957159
SGI-Modid: xfs-linux-melb:xfs-kern:27585a
Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: David Chatterton <chatz@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 2 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_buf.c | 24 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_export.c | 2 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_file.c | 4 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_iops.c | 4 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 16 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sysctl.c | 6 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_vnode.c | 2 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_vnode.h | 4 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_dquot_item.c | 6 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm.c | 6 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm_bhv.c | 2 | ||||
-rw-r--r-- | fs/xfs/support/debug.h | 30 | ||||
-rw-r--r-- | fs/xfs/xfs_attr.c | 12 | ||||
-rw-r--r-- | fs/xfs/xfs_attr_leaf.c | 6 | ||||
-rw-r--r-- | fs/xfs/xfs_bit.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap_btree.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_buf_item.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_extfree_item.c | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_ialloc.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_inode_item.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_mount.c | 8 |
23 files changed, 87 insertions, 63 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 7b54461695e2..9761a5befef0 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
@@ -249,7 +249,7 @@ xfs_map_blocks( | |||
249 | return -error; | 249 | return -error; |
250 | } | 250 | } |
251 | 251 | ||
252 | STATIC inline int | 252 | STATIC_INLINE int |
253 | xfs_iomap_valid( | 253 | xfs_iomap_valid( |
254 | xfs_iomap_t *iomapp, | 254 | xfs_iomap_t *iomapp, |
255 | loff_t offset) | 255 | loff_t offset) |
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 168eecd8127e..e2bea6a661f0 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c | |||
@@ -34,13 +34,13 @@ | |||
34 | #include <linux/backing-dev.h> | 34 | #include <linux/backing-dev.h> |
35 | #include <linux/freezer.h> | 35 | #include <linux/freezer.h> |
36 | 36 | ||
37 | STATIC kmem_zone_t *xfs_buf_zone; | 37 | static kmem_zone_t *xfs_buf_zone; |
38 | STATIC kmem_shaker_t xfs_buf_shake; | 38 | static kmem_shaker_t xfs_buf_shake; |
39 | STATIC int xfsbufd(void *); | 39 | STATIC int xfsbufd(void *); |
40 | STATIC int xfsbufd_wakeup(int, gfp_t); | 40 | STATIC int xfsbufd_wakeup(int, gfp_t); |
41 | STATIC void xfs_buf_delwri_queue(xfs_buf_t *, int); | 41 | STATIC void xfs_buf_delwri_queue(xfs_buf_t *, int); |
42 | 42 | ||
43 | STATIC struct workqueue_struct *xfslogd_workqueue; | 43 | static struct workqueue_struct *xfslogd_workqueue; |
44 | struct workqueue_struct *xfsdatad_workqueue; | 44 | struct workqueue_struct *xfsdatad_workqueue; |
45 | 45 | ||
46 | #ifdef XFS_BUF_TRACE | 46 | #ifdef XFS_BUF_TRACE |
@@ -139,7 +139,7 @@ page_region_mask( | |||
139 | return mask; | 139 | return mask; |
140 | } | 140 | } |
141 | 141 | ||
142 | STATIC inline void | 142 | STATIC_INLINE void |
143 | set_page_region( | 143 | set_page_region( |
144 | struct page *page, | 144 | struct page *page, |
145 | size_t offset, | 145 | size_t offset, |
@@ -151,7 +151,7 @@ set_page_region( | |||
151 | SetPageUptodate(page); | 151 | SetPageUptodate(page); |
152 | } | 152 | } |
153 | 153 | ||
154 | STATIC inline int | 154 | STATIC_INLINE int |
155 | test_page_region( | 155 | test_page_region( |
156 | struct page *page, | 156 | struct page *page, |
157 | size_t offset, | 157 | size_t offset, |
@@ -171,9 +171,9 @@ typedef struct a_list { | |||
171 | struct a_list *next; | 171 | struct a_list *next; |
172 | } a_list_t; | 172 | } a_list_t; |
173 | 173 | ||
174 | STATIC a_list_t *as_free_head; | 174 | static a_list_t *as_free_head; |
175 | STATIC int as_list_len; | 175 | static int as_list_len; |
176 | STATIC DEFINE_SPINLOCK(as_lock); | 176 | static DEFINE_SPINLOCK(as_lock); |
177 | 177 | ||
178 | /* | 178 | /* |
179 | * Try to batch vunmaps because they are costly. | 179 | * Try to batch vunmaps because they are costly. |
@@ -1085,7 +1085,7 @@ xfs_buf_iostart( | |||
1085 | return status; | 1085 | return status; |
1086 | } | 1086 | } |
1087 | 1087 | ||
1088 | STATIC __inline__ int | 1088 | STATIC_INLINE int |
1089 | _xfs_buf_iolocked( | 1089 | _xfs_buf_iolocked( |
1090 | xfs_buf_t *bp) | 1090 | xfs_buf_t *bp) |
1091 | { | 1091 | { |
@@ -1095,7 +1095,7 @@ _xfs_buf_iolocked( | |||
1095 | return 0; | 1095 | return 0; |
1096 | } | 1096 | } |
1097 | 1097 | ||
1098 | STATIC __inline__ void | 1098 | STATIC_INLINE void |
1099 | _xfs_buf_ioend( | 1099 | _xfs_buf_ioend( |
1100 | xfs_buf_t *bp, | 1100 | xfs_buf_t *bp, |
1101 | int schedule) | 1101 | int schedule) |
@@ -1426,8 +1426,8 @@ xfs_free_bufhash( | |||
1426 | /* | 1426 | /* |
1427 | * buftarg list for delwrite queue processing | 1427 | * buftarg list for delwrite queue processing |
1428 | */ | 1428 | */ |
1429 | STATIC LIST_HEAD(xfs_buftarg_list); | 1429 | LIST_HEAD(xfs_buftarg_list); |
1430 | STATIC DEFINE_SPINLOCK(xfs_buftarg_lock); | 1430 | static DEFINE_SPINLOCK(xfs_buftarg_lock); |
1431 | 1431 | ||
1432 | STATIC void | 1432 | STATIC void |
1433 | xfs_register_buftarg( | 1433 | xfs_register_buftarg( |
diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c index 5fb75d9151f2..e3a5fedac1ba 100644 --- a/fs/xfs/linux-2.6/xfs_export.c +++ b/fs/xfs/linux-2.6/xfs_export.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "xfs_mount.h" | 24 | #include "xfs_mount.h" |
25 | #include "xfs_export.h" | 25 | #include "xfs_export.h" |
26 | 26 | ||
27 | STATIC struct dentry dotdot = { .d_name.name = "..", .d_name.len = 2, }; | 27 | static struct dentry dotdot = { .d_name.name = "..", .d_name.len = 2, }; |
28 | 28 | ||
29 | /* | 29 | /* |
30 | * XFS encodes and decodes the fileid portion of NFS filehandles | 30 | * XFS encodes and decodes the fileid portion of NFS filehandles |
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index d26f5cd2ba70..cb51dc961355 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c | |||
@@ -46,7 +46,7 @@ static struct vm_operations_struct xfs_file_vm_ops; | |||
46 | static struct vm_operations_struct xfs_dmapi_file_vm_ops; | 46 | static struct vm_operations_struct xfs_dmapi_file_vm_ops; |
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | STATIC inline ssize_t | 49 | STATIC_INLINE ssize_t |
50 | __xfs_file_read( | 50 | __xfs_file_read( |
51 | struct kiocb *iocb, | 51 | struct kiocb *iocb, |
52 | const struct iovec *iov, | 52 | const struct iovec *iov, |
@@ -84,7 +84,7 @@ xfs_file_aio_read_invis( | |||
84 | return __xfs_file_read(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); | 84 | return __xfs_file_read(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); |
85 | } | 85 | } |
86 | 86 | ||
87 | STATIC inline ssize_t | 87 | STATIC_INLINE ssize_t |
88 | __xfs_file_write( | 88 | __xfs_file_write( |
89 | struct kiocb *iocb, | 89 | struct kiocb *iocb, |
90 | const struct iovec *iov, | 90 | const struct iovec *iov, |
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index 3ba814ae3bba..4dd6cb56c2d5 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c | |||
@@ -250,13 +250,13 @@ xfs_init_security( | |||
250 | * | 250 | * |
251 | * XXX(hch): nfsd is broken, better fix it instead. | 251 | * XXX(hch): nfsd is broken, better fix it instead. |
252 | */ | 252 | */ |
253 | STATIC inline int | 253 | STATIC_INLINE int |
254 | xfs_has_fs_struct(struct task_struct *task) | 254 | xfs_has_fs_struct(struct task_struct *task) |
255 | { | 255 | { |
256 | return (task->fs != init_task.fs); | 256 | return (task->fs != init_task.fs); |
257 | } | 257 | } |
258 | 258 | ||
259 | STATIC inline void | 259 | STATIC void |
260 | xfs_cleanup_inode( | 260 | xfs_cleanup_inode( |
261 | bhv_vnode_t *dvp, | 261 | bhv_vnode_t *dvp, |
262 | bhv_vnode_t *vp, | 262 | bhv_vnode_t *vp, |
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index b93265b7c79c..dab5d3802374 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -58,10 +58,10 @@ | |||
58 | #include <linux/kthread.h> | 58 | #include <linux/kthread.h> |
59 | #include <linux/freezer.h> | 59 | #include <linux/freezer.h> |
60 | 60 | ||
61 | STATIC struct quotactl_ops xfs_quotactl_operations; | 61 | static struct quotactl_ops xfs_quotactl_operations; |
62 | STATIC struct super_operations xfs_super_operations; | 62 | static struct super_operations xfs_super_operations; |
63 | STATIC kmem_zone_t *xfs_vnode_zone; | 63 | static kmem_zone_t *xfs_vnode_zone; |
64 | STATIC kmem_zone_t *xfs_ioend_zone; | 64 | static kmem_zone_t *xfs_ioend_zone; |
65 | mempool_t *xfs_ioend_pool; | 65 | mempool_t *xfs_ioend_pool; |
66 | 66 | ||
67 | STATIC struct xfs_mount_args * | 67 | STATIC struct xfs_mount_args * |
@@ -121,7 +121,7 @@ xfs_max_file_offset( | |||
121 | return (((__uint64_t)pagefactor) << bitshift) - 1; | 121 | return (((__uint64_t)pagefactor) << bitshift) - 1; |
122 | } | 122 | } |
123 | 123 | ||
124 | STATIC __inline__ void | 124 | STATIC_INLINE void |
125 | xfs_set_inodeops( | 125 | xfs_set_inodeops( |
126 | struct inode *inode) | 126 | struct inode *inode) |
127 | { | 127 | { |
@@ -147,7 +147,7 @@ xfs_set_inodeops( | |||
147 | } | 147 | } |
148 | } | 148 | } |
149 | 149 | ||
150 | STATIC __inline__ void | 150 | STATIC_INLINE void |
151 | xfs_revalidate_inode( | 151 | xfs_revalidate_inode( |
152 | xfs_mount_t *mp, | 152 | xfs_mount_t *mp, |
153 | bhv_vnode_t *vp, | 153 | bhv_vnode_t *vp, |
@@ -873,7 +873,7 @@ xfs_fs_get_sb( | |||
873 | mnt); | 873 | mnt); |
874 | } | 874 | } |
875 | 875 | ||
876 | STATIC struct super_operations xfs_super_operations = { | 876 | static struct super_operations xfs_super_operations = { |
877 | .alloc_inode = xfs_fs_alloc_inode, | 877 | .alloc_inode = xfs_fs_alloc_inode, |
878 | .destroy_inode = xfs_fs_destroy_inode, | 878 | .destroy_inode = xfs_fs_destroy_inode, |
879 | .write_inode = xfs_fs_write_inode, | 879 | .write_inode = xfs_fs_write_inode, |
@@ -887,7 +887,7 @@ STATIC struct super_operations xfs_super_operations = { | |||
887 | .show_options = xfs_fs_show_options, | 887 | .show_options = xfs_fs_show_options, |
888 | }; | 888 | }; |
889 | 889 | ||
890 | STATIC struct quotactl_ops xfs_quotactl_operations = { | 890 | static struct quotactl_ops xfs_quotactl_operations = { |
891 | .quota_sync = xfs_fs_quotasync, | 891 | .quota_sync = xfs_fs_quotasync, |
892 | .get_xstate = xfs_fs_getxstate, | 892 | .get_xstate = xfs_fs_getxstate, |
893 | .set_xstate = xfs_fs_setxstate, | 893 | .set_xstate = xfs_fs_setxstate, |
diff --git a/fs/xfs/linux-2.6/xfs_sysctl.c b/fs/xfs/linux-2.6/xfs_sysctl.c index af246532fbfb..b1036dd5012d 100644 --- a/fs/xfs/linux-2.6/xfs_sysctl.c +++ b/fs/xfs/linux-2.6/xfs_sysctl.c | |||
@@ -54,7 +54,7 @@ xfs_stats_clear_proc_handler( | |||
54 | } | 54 | } |
55 | #endif /* CONFIG_PROC_FS */ | 55 | #endif /* CONFIG_PROC_FS */ |
56 | 56 | ||
57 | STATIC ctl_table xfs_table[] = { | 57 | static ctl_table xfs_table[] = { |
58 | {XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val, | 58 | {XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val, |
59 | sizeof(int), 0644, NULL, &proc_dointvec_minmax, | 59 | sizeof(int), 0644, NULL, &proc_dointvec_minmax, |
60 | &sysctl_intvec, NULL, | 60 | &sysctl_intvec, NULL, |
@@ -136,12 +136,12 @@ STATIC ctl_table xfs_table[] = { | |||
136 | {0} | 136 | {0} |
137 | }; | 137 | }; |
138 | 138 | ||
139 | STATIC ctl_table xfs_dir_table[] = { | 139 | static ctl_table xfs_dir_table[] = { |
140 | {FS_XFS, "xfs", NULL, 0, 0555, xfs_table}, | 140 | {FS_XFS, "xfs", NULL, 0, 0555, xfs_table}, |
141 | {0} | 141 | {0} |
142 | }; | 142 | }; |
143 | 143 | ||
144 | STATIC ctl_table xfs_root_table[] = { | 144 | static ctl_table xfs_root_table[] = { |
145 | {CTL_FS, "fs", NULL, 0, 0555, xfs_dir_table}, | 145 | {CTL_FS, "fs", NULL, 0, 0555, xfs_dir_table}, |
146 | {0} | 146 | {0} |
147 | }; | 147 | }; |
diff --git a/fs/xfs/linux-2.6/xfs_vnode.c b/fs/xfs/linux-2.6/xfs_vnode.c index 553fa731ade5..ada24baf88de 100644 --- a/fs/xfs/linux-2.6/xfs_vnode.c +++ b/fs/xfs/linux-2.6/xfs_vnode.c | |||
@@ -26,7 +26,7 @@ DEFINE_SPINLOCK(vnumber_lock); | |||
26 | */ | 26 | */ |
27 | #define NVSYNC 37 | 27 | #define NVSYNC 37 |
28 | #define vptosync(v) (&vsync[((unsigned long)v) % NVSYNC]) | 28 | #define vptosync(v) (&vsync[((unsigned long)v) % NVSYNC]) |
29 | STATIC wait_queue_head_t vsync[NVSYNC]; | 29 | static wait_queue_head_t vsync[NVSYNC]; |
30 | 30 | ||
31 | void | 31 | void |
32 | vn_init(void) | 32 | vn_init(void) |
diff --git a/fs/xfs/linux-2.6/xfs_vnode.h b/fs/xfs/linux-2.6/xfs_vnode.h index 515f5fdea57a..b76118cf4897 100644 --- a/fs/xfs/linux-2.6/xfs_vnode.h +++ b/fs/xfs/linux-2.6/xfs_vnode.h | |||
@@ -489,14 +489,14 @@ static inline struct bhv_vnode *vn_grab(struct bhv_vnode *vp) | |||
489 | #define VN_LOCK(vp) mutex_spinlock(&(vp)->v_lock) | 489 | #define VN_LOCK(vp) mutex_spinlock(&(vp)->v_lock) |
490 | #define VN_UNLOCK(vp, s) mutex_spinunlock(&(vp)->v_lock, s) | 490 | #define VN_UNLOCK(vp, s) mutex_spinunlock(&(vp)->v_lock, s) |
491 | 491 | ||
492 | static __inline__ void vn_flagset(struct bhv_vnode *vp, uint flag) | 492 | STATIC_INLINE void vn_flagset(struct bhv_vnode *vp, uint flag) |
493 | { | 493 | { |
494 | spin_lock(&vp->v_lock); | 494 | spin_lock(&vp->v_lock); |
495 | vp->v_flag |= flag; | 495 | vp->v_flag |= flag; |
496 | spin_unlock(&vp->v_lock); | 496 | spin_unlock(&vp->v_lock); |
497 | } | 497 | } |
498 | 498 | ||
499 | static __inline__ uint vn_flagclr(struct bhv_vnode *vp, uint flag) | 499 | STATIC_INLINE uint vn_flagclr(struct bhv_vnode *vp, uint flag) |
500 | { | 500 | { |
501 | uint cleared; | 501 | uint cleared; |
502 | 502 | ||
diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index 33ad5af386e0..aa3c76a6822c 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c | |||
@@ -399,7 +399,7 @@ xfs_qm_dquot_logitem_committing( | |||
399 | /* | 399 | /* |
400 | * This is the ops vector for dquots | 400 | * This is the ops vector for dquots |
401 | */ | 401 | */ |
402 | STATIC struct xfs_item_ops xfs_dquot_item_ops = { | 402 | static struct xfs_item_ops xfs_dquot_item_ops = { |
403 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_dquot_logitem_size, | 403 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_dquot_logitem_size, |
404 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 404 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
405 | xfs_qm_dquot_logitem_format, | 405 | xfs_qm_dquot_logitem_format, |
@@ -606,7 +606,7 @@ xfs_qm_qoffend_logitem_committing(xfs_qoff_logitem_t *qip, xfs_lsn_t commit_lsn) | |||
606 | return; | 606 | return; |
607 | } | 607 | } |
608 | 608 | ||
609 | STATIC struct xfs_item_ops xfs_qm_qoffend_logitem_ops = { | 609 | static struct xfs_item_ops xfs_qm_qoffend_logitem_ops = { |
610 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_qoff_logitem_size, | 610 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_qoff_logitem_size, |
611 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 611 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
612 | xfs_qm_qoff_logitem_format, | 612 | xfs_qm_qoff_logitem_format, |
@@ -628,7 +628,7 @@ STATIC struct xfs_item_ops xfs_qm_qoffend_logitem_ops = { | |||
628 | /* | 628 | /* |
629 | * This is the ops vector shared by all quotaoff-start log items. | 629 | * This is the ops vector shared by all quotaoff-start log items. |
630 | */ | 630 | */ |
631 | STATIC struct xfs_item_ops xfs_qm_qoff_logitem_ops = { | 631 | static struct xfs_item_ops xfs_qm_qoff_logitem_ops = { |
632 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_qoff_logitem_size, | 632 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_qoff_logitem_size, |
633 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 633 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
634 | xfs_qm_qoff_logitem_format, | 634 | xfs_qm_qoff_logitem_format, |
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 7c6a3a50379e..db1be5dc4ac2 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -64,10 +64,10 @@ uint ndquot; | |||
64 | 64 | ||
65 | kmem_zone_t *qm_dqzone; | 65 | kmem_zone_t *qm_dqzone; |
66 | kmem_zone_t *qm_dqtrxzone; | 66 | kmem_zone_t *qm_dqtrxzone; |
67 | STATIC kmem_shaker_t xfs_qm_shaker; | 67 | static kmem_shaker_t xfs_qm_shaker; |
68 | 68 | ||
69 | STATIC cred_t xfs_zerocr; | 69 | static cred_t xfs_zerocr; |
70 | STATIC xfs_inode_t xfs_zeroino; | 70 | static xfs_inode_t xfs_zeroino; |
71 | 71 | ||
72 | STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); | 72 | STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); |
73 | STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); | 73 | STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); |
diff --git a/fs/xfs/quota/xfs_qm_bhv.c b/fs/xfs/quota/xfs_qm_bhv.c index db8872be8c87..39a99ab5918f 100644 --- a/fs/xfs/quota/xfs_qm_bhv.c +++ b/fs/xfs/quota/xfs_qm_bhv.c | |||
@@ -384,7 +384,7 @@ xfs_qm_dqrele_null( | |||
384 | } | 384 | } |
385 | 385 | ||
386 | 386 | ||
387 | STATIC struct xfs_qmops xfs_qmcore_xfs = { | 387 | static struct xfs_qmops xfs_qmcore_xfs = { |
388 | .xfs_qminit = xfs_qm_newmount, | 388 | .xfs_qminit = xfs_qm_newmount, |
389 | .xfs_qmdone = xfs_qm_unmount_quotadestroy, | 389 | .xfs_qmdone = xfs_qm_unmount_quotadestroy, |
390 | .xfs_qmmount = xfs_qm_endmount, | 390 | .xfs_qmmount = xfs_qm_endmount, |
diff --git a/fs/xfs/support/debug.h b/fs/xfs/support/debug.h index 4f54dca662a8..2a70cc605ae3 100644 --- a/fs/xfs/support/debug.h +++ b/fs/xfs/support/debug.h | |||
@@ -38,13 +38,37 @@ extern void assfail(char *expr, char *f, int l); | |||
38 | 38 | ||
39 | #ifndef DEBUG | 39 | #ifndef DEBUG |
40 | # define ASSERT(expr) ((void)0) | 40 | # define ASSERT(expr) ((void)0) |
41 | #else | 41 | |
42 | #ifndef STATIC | ||
43 | # define STATIC static noinline | ||
44 | #endif | ||
45 | |||
46 | #ifndef STATIC_INLINE | ||
47 | # define STATIC_INLINE static inline | ||
48 | #endif | ||
49 | |||
50 | #else /* DEBUG */ | ||
51 | |||
42 | # define ASSERT(expr) ASSERT_ALWAYS(expr) | 52 | # define ASSERT(expr) ASSERT_ALWAYS(expr) |
43 | extern unsigned long random(void); | 53 | extern unsigned long random(void); |
44 | #endif | ||
45 | 54 | ||
46 | #ifndef STATIC | 55 | #ifndef STATIC |
47 | # define STATIC static | 56 | # define STATIC noinline |
48 | #endif | 57 | #endif |
49 | 58 | ||
59 | /* | ||
60 | * We stop inlining of inline functions in debug mode. | ||
61 | * Unfortunately, this means static inline in header files | ||
62 | * get multiple definitions, so they need to remain static. | ||
63 | * This then gives tonnes of warnings about unused but defined | ||
64 | * functions, so we need to add the unused attribute to prevent | ||
65 | * these spurious warnings. | ||
66 | */ | ||
67 | #ifndef STATIC_INLINE | ||
68 | # define STATIC_INLINE static __attribute__ ((unused)) noinline | ||
69 | #endif | ||
70 | |||
71 | #endif /* DEBUG */ | ||
72 | |||
73 | |||
50 | #endif /* __XFS_SUPPORT_DEBUG_H__ */ | 74 | #endif /* __XFS_SUPPORT_DEBUG_H__ */ |
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index 9ada7bdbae52..c6c2596e827a 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c | |||
@@ -57,9 +57,9 @@ | |||
57 | */ | 57 | */ |
58 | 58 | ||
59 | #define ATTR_SYSCOUNT 2 | 59 | #define ATTR_SYSCOUNT 2 |
60 | STATIC struct attrnames posix_acl_access; | 60 | static struct attrnames posix_acl_access; |
61 | STATIC struct attrnames posix_acl_default; | 61 | static struct attrnames posix_acl_default; |
62 | STATIC struct attrnames *attr_system_names[ATTR_SYSCOUNT]; | 62 | static struct attrnames *attr_system_names[ATTR_SYSCOUNT]; |
63 | 63 | ||
64 | /*======================================================================== | 64 | /*======================================================================== |
65 | * Function prototypes for the kernel. | 65 | * Function prototypes for the kernel. |
@@ -2477,7 +2477,7 @@ posix_acl_default_exists( | |||
2477 | return xfs_acl_vhasacl_default(vp); | 2477 | return xfs_acl_vhasacl_default(vp); |
2478 | } | 2478 | } |
2479 | 2479 | ||
2480 | STATIC struct attrnames posix_acl_access = { | 2480 | static struct attrnames posix_acl_access = { |
2481 | .attr_name = "posix_acl_access", | 2481 | .attr_name = "posix_acl_access", |
2482 | .attr_namelen = sizeof("posix_acl_access") - 1, | 2482 | .attr_namelen = sizeof("posix_acl_access") - 1, |
2483 | .attr_get = posix_acl_access_get, | 2483 | .attr_get = posix_acl_access_get, |
@@ -2486,7 +2486,7 @@ STATIC struct attrnames posix_acl_access = { | |||
2486 | .attr_exists = posix_acl_access_exists, | 2486 | .attr_exists = posix_acl_access_exists, |
2487 | }; | 2487 | }; |
2488 | 2488 | ||
2489 | STATIC struct attrnames posix_acl_default = { | 2489 | static struct attrnames posix_acl_default = { |
2490 | .attr_name = "posix_acl_default", | 2490 | .attr_name = "posix_acl_default", |
2491 | .attr_namelen = sizeof("posix_acl_default") - 1, | 2491 | .attr_namelen = sizeof("posix_acl_default") - 1, |
2492 | .attr_get = posix_acl_default_get, | 2492 | .attr_get = posix_acl_default_get, |
@@ -2495,7 +2495,7 @@ STATIC struct attrnames posix_acl_default = { | |||
2495 | .attr_exists = posix_acl_default_exists, | 2495 | .attr_exists = posix_acl_default_exists, |
2496 | }; | 2496 | }; |
2497 | 2497 | ||
2498 | STATIC struct attrnames *attr_system_names[] = | 2498 | static struct attrnames *attr_system_names[] = |
2499 | { &posix_acl_access, &posix_acl_default }; | 2499 | { &posix_acl_access, &posix_acl_default }; |
2500 | 2500 | ||
2501 | 2501 | ||
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index 9719bbef122c..cc4ffa413da4 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c | |||
@@ -94,7 +94,7 @@ STATIC int xfs_attr_leaf_entsize(xfs_attr_leafblock_t *leaf, int index); | |||
94 | * Namespace helper routines | 94 | * Namespace helper routines |
95 | *========================================================================*/ | 95 | *========================================================================*/ |
96 | 96 | ||
97 | STATIC inline attrnames_t * | 97 | STATIC_INLINE attrnames_t * |
98 | xfs_attr_flags_namesp(int flags) | 98 | xfs_attr_flags_namesp(int flags) |
99 | { | 99 | { |
100 | return ((flags & XFS_ATTR_SECURE) ? &attr_secure: | 100 | return ((flags & XFS_ATTR_SECURE) ? &attr_secure: |
@@ -105,7 +105,7 @@ xfs_attr_flags_namesp(int flags) | |||
105 | * If namespace bits don't match return 0. | 105 | * If namespace bits don't match return 0. |
106 | * If all match then return 1. | 106 | * If all match then return 1. |
107 | */ | 107 | */ |
108 | STATIC inline int | 108 | STATIC_INLINE int |
109 | xfs_attr_namesp_match(int arg_flags, int ondisk_flags) | 109 | xfs_attr_namesp_match(int arg_flags, int ondisk_flags) |
110 | { | 110 | { |
111 | return XFS_ATTR_NSP_ONDISK(ondisk_flags) == XFS_ATTR_NSP_ARGS_TO_ONDISK(arg_flags); | 111 | return XFS_ATTR_NSP_ONDISK(ondisk_flags) == XFS_ATTR_NSP_ARGS_TO_ONDISK(arg_flags); |
@@ -116,7 +116,7 @@ xfs_attr_namesp_match(int arg_flags, int ondisk_flags) | |||
116 | * then return 0. | 116 | * then return 0. |
117 | * If all match or are overridable then return 1. | 117 | * If all match or are overridable then return 1. |
118 | */ | 118 | */ |
119 | STATIC inline int | 119 | STATIC_INLINE int |
120 | xfs_attr_namesp_match_overrides(int arg_flags, int ondisk_flags) | 120 | xfs_attr_namesp_match_overrides(int arg_flags, int ondisk_flags) |
121 | { | 121 | { |
122 | if (((arg_flags & ATTR_SECURE) == 0) != | 122 | if (((arg_flags & ATTR_SECURE) == 0) != |
diff --git a/fs/xfs/xfs_bit.c b/fs/xfs/xfs_bit.c index 43be6a7e47c6..1afe07f67e3b 100644 --- a/fs/xfs/xfs_bit.c +++ b/fs/xfs/xfs_bit.c | |||
@@ -29,7 +29,7 @@ | |||
29 | /* | 29 | /* |
30 | * Index of high bit number in byte, -1 for none set, 0..7 otherwise. | 30 | * Index of high bit number in byte, -1 for none set, 0..7 otherwise. |
31 | */ | 31 | */ |
32 | STATIC const char xfs_highbit[256] = { | 32 | static const char xfs_highbit[256] = { |
33 | -1, 0, 1, 1, 2, 2, 2, 2, /* 00 .. 07 */ | 33 | -1, 0, 1, 1, 2, 2, 2, 2, /* 00 .. 07 */ |
34 | 3, 3, 3, 3, 3, 3, 3, 3, /* 08 .. 0f */ | 34 | 3, 3, 3, 3, 3, 3, 3, 3, /* 08 .. 0f */ |
35 | 4, 4, 4, 4, 4, 4, 4, 4, /* 10 .. 17 */ | 35 | 4, 4, 4, 4, 4, 4, 4, 4, /* 10 .. 17 */ |
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index a7b835bf870a..3a925100e90c 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c | |||
@@ -1862,7 +1862,7 @@ xfs_bmbt_delete( | |||
1862 | * xfs_bmbt_get_startblock, xfs_bmbt_get_blockcount and xfs_bmbt_get_state. | 1862 | * xfs_bmbt_get_startblock, xfs_bmbt_get_blockcount and xfs_bmbt_get_state. |
1863 | */ | 1863 | */ |
1864 | 1864 | ||
1865 | STATIC __inline__ void | 1865 | STATIC_INLINE void |
1866 | __xfs_bmbt_get_all( | 1866 | __xfs_bmbt_get_all( |
1867 | __uint64_t l0, | 1867 | __uint64_t l0, |
1868 | __uint64_t l1, | 1868 | __uint64_t l1, |
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index 7a55c248ea70..6c1bddc04e31 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c | |||
@@ -660,7 +660,7 @@ xfs_buf_item_committing(xfs_buf_log_item_t *bip, xfs_lsn_t commit_lsn) | |||
660 | /* | 660 | /* |
661 | * This is the ops vector shared by all buf log items. | 661 | * This is the ops vector shared by all buf log items. |
662 | */ | 662 | */ |
663 | STATIC struct xfs_item_ops xfs_buf_item_ops = { | 663 | static struct xfs_item_ops xfs_buf_item_ops = { |
664 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_buf_item_size, | 664 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_buf_item_size, |
665 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 665 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
666 | xfs_buf_item_format, | 666 | xfs_buf_item_format, |
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c index 6dba78199faf..3b14427ee123 100644 --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c | |||
@@ -227,7 +227,7 @@ xfs_efi_item_committing(xfs_efi_log_item_t *efip, xfs_lsn_t lsn) | |||
227 | /* | 227 | /* |
228 | * This is the ops vector shared by all efi log items. | 228 | * This is the ops vector shared by all efi log items. |
229 | */ | 229 | */ |
230 | STATIC struct xfs_item_ops xfs_efi_item_ops = { | 230 | static struct xfs_item_ops xfs_efi_item_ops = { |
231 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_efi_item_size, | 231 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_efi_item_size, |
232 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 232 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
233 | xfs_efi_item_format, | 233 | xfs_efi_item_format, |
@@ -525,7 +525,7 @@ xfs_efd_item_committing(xfs_efd_log_item_t *efip, xfs_lsn_t lsn) | |||
525 | /* | 525 | /* |
526 | * This is the ops vector shared by all efd log items. | 526 | * This is the ops vector shared by all efd log items. |
527 | */ | 527 | */ |
528 | STATIC struct xfs_item_ops xfs_efd_item_ops = { | 528 | static struct xfs_item_ops xfs_efd_item_ops = { |
529 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_efd_item_size, | 529 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_efd_item_size, |
530 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 530 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
531 | xfs_efd_item_format, | 531 | xfs_efd_item_format, |
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index a446e5a115c6..b5feb3e77116 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c | |||
@@ -342,7 +342,7 @@ xfs_ialloc_ag_alloc( | |||
342 | return 0; | 342 | return 0; |
343 | } | 343 | } |
344 | 344 | ||
345 | STATIC __inline xfs_agnumber_t | 345 | STATIC_INLINE xfs_agnumber_t |
346 | xfs_ialloc_next_ag( | 346 | xfs_ialloc_next_ag( |
347 | xfs_mount_t *mp) | 347 | xfs_mount_t *mp) |
348 | { | 348 | { |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 44dfac521285..cd518581a3bb 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -2125,7 +2125,7 @@ xfs_iunlink_remove( | |||
2125 | return 0; | 2125 | return 0; |
2126 | } | 2126 | } |
2127 | 2127 | ||
2128 | static __inline__ int xfs_inode_clean(xfs_inode_t *ip) | 2128 | STATIC_INLINE int xfs_inode_clean(xfs_inode_t *ip) |
2129 | { | 2129 | { |
2130 | return (((ip->i_itemp == NULL) || | 2130 | return (((ip->i_itemp == NULL) || |
2131 | !(ip->i_itemp->ili_format.ilf_fields & XFS_ILOG_ALL)) && | 2131 | !(ip->i_itemp->ili_format.ilf_fields & XFS_ILOG_ALL)) && |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index a7a92251eb56..565d470a6b4a 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -887,7 +887,7 @@ xfs_inode_item_committing( | |||
887 | /* | 887 | /* |
888 | * This is the ops vector shared by all buf log items. | 888 | * This is the ops vector shared by all buf log items. |
889 | */ | 889 | */ |
890 | STATIC struct xfs_item_ops xfs_inode_item_ops = { | 890 | static struct xfs_item_ops xfs_inode_item_ops = { |
891 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_inode_item_size, | 891 | .iop_size = (uint(*)(xfs_log_item_t*))xfs_inode_item_size, |
892 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) | 892 | .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) |
893 | xfs_inode_item_format, | 893 | xfs_inode_item_format, |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 9dfae18d995f..397730f570b9 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -1802,7 +1802,7 @@ xfs_icsb_destroy_counters( | |||
1802 | } | 1802 | } |
1803 | } | 1803 | } |
1804 | 1804 | ||
1805 | STATIC inline void | 1805 | STATIC_INLINE void |
1806 | xfs_icsb_lock_cntr( | 1806 | xfs_icsb_lock_cntr( |
1807 | xfs_icsb_cnts_t *icsbp) | 1807 | xfs_icsb_cnts_t *icsbp) |
1808 | { | 1808 | { |
@@ -1811,7 +1811,7 @@ xfs_icsb_lock_cntr( | |||
1811 | } | 1811 | } |
1812 | } | 1812 | } |
1813 | 1813 | ||
1814 | STATIC inline void | 1814 | STATIC_INLINE void |
1815 | xfs_icsb_unlock_cntr( | 1815 | xfs_icsb_unlock_cntr( |
1816 | xfs_icsb_cnts_t *icsbp) | 1816 | xfs_icsb_cnts_t *icsbp) |
1817 | { | 1817 | { |
@@ -1819,7 +1819,7 @@ xfs_icsb_unlock_cntr( | |||
1819 | } | 1819 | } |
1820 | 1820 | ||
1821 | 1821 | ||
1822 | STATIC inline void | 1822 | STATIC_INLINE void |
1823 | xfs_icsb_lock_all_counters( | 1823 | xfs_icsb_lock_all_counters( |
1824 | xfs_mount_t *mp) | 1824 | xfs_mount_t *mp) |
1825 | { | 1825 | { |
@@ -1832,7 +1832,7 @@ xfs_icsb_lock_all_counters( | |||
1832 | } | 1832 | } |
1833 | } | 1833 | } |
1834 | 1834 | ||
1835 | STATIC inline void | 1835 | STATIC_INLINE void |
1836 | xfs_icsb_unlock_all_counters( | 1836 | xfs_icsb_unlock_all_counters( |
1837 | xfs_mount_t *mp) | 1837 | xfs_mount_t *mp) |
1838 | { | 1838 | { |