diff options
| author | Pekka Enberg <penberg@cs.helsinki.fi> | 2009-01-04 15:00:48 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-04 16:33:20 -0500 |
| commit | c644f0e4b56f9a2fc066cd0d75a18074d130e4a3 (patch) | |
| tree | 96f5954d7e72a2bf56f4165f4e7569364562f04f /include/linux | |
| parent | 0a30c5cefa53cbac429dcb2de906c0637b646253 (diff) | |
fs: introduce bgl_lock_ptr()
As suggested by Andreas Dilger, introduce a bgl_lock_ptr() helper in
<linux/blockgroup_lock.h> and add separate sb_bgl_lock() helpers to
filesystem specific header files to break the hidden dependency to
struct ext[234]_sb_info.
Also, while at it, convert the macros to static inlines to try make up
for all the times I broke Andrew Morton's tree.
Acked-by: Andreas Dilger <adilger@sun.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/blockgroup_lock.h | 7 | ||||
| -rw-r--r-- | include/linux/ext2_fs_sb.h | 6 | ||||
| -rw-r--r-- | include/linux/ext3_fs_sb.h | 6 |
3 files changed, 17 insertions, 2 deletions
diff --git a/include/linux/blockgroup_lock.h b/include/linux/blockgroup_lock.h index 8607312983bd..e44b88ba552b 100644 --- a/include/linux/blockgroup_lock.h +++ b/include/linux/blockgroup_lock.h | |||
| @@ -53,7 +53,10 @@ static inline void bgl_lock_init(struct blockgroup_lock *bgl) | |||
| 53 | * The accessor is a macro so we can embed a blockgroup_lock into different | 53 | * The accessor is a macro so we can embed a blockgroup_lock into different |
| 54 | * superblock types | 54 | * superblock types |
| 55 | */ | 55 | */ |
| 56 | #define sb_bgl_lock(sb, block_group) \ | 56 | static inline spinlock_t * |
| 57 | (&(sb)->s_blockgroup_lock.locks[(block_group) & (NR_BG_LOCKS-1)].lock) | 57 | bgl_lock_ptr(struct blockgroup_lock *bgl, unsigned int block_group) |
| 58 | { | ||
| 59 | return &bgl->locks[(block_group) & (NR_BG_LOCKS-1)].lock; | ||
| 60 | } | ||
| 58 | 61 | ||
| 59 | #endif | 62 | #endif |
diff --git a/include/linux/ext2_fs_sb.h b/include/linux/ext2_fs_sb.h index f273415ab6f1..dc541f3653d1 100644 --- a/include/linux/ext2_fs_sb.h +++ b/include/linux/ext2_fs_sb.h | |||
| @@ -108,4 +108,10 @@ struct ext2_sb_info { | |||
| 108 | struct ext2_reserve_window_node s_rsv_window_head; | 108 | struct ext2_reserve_window_node s_rsv_window_head; |
| 109 | }; | 109 | }; |
| 110 | 110 | ||
| 111 | static inline spinlock_t * | ||
| 112 | sb_bgl_lock(struct ext2_sb_info *sbi, unsigned int block_group) | ||
| 113 | { | ||
| 114 | return bgl_lock_ptr(&sbi->s_blockgroup_lock, block_group); | ||
| 115 | } | ||
| 116 | |||
| 111 | #endif /* _LINUX_EXT2_FS_SB */ | 117 | #endif /* _LINUX_EXT2_FS_SB */ |
diff --git a/include/linux/ext3_fs_sb.h b/include/linux/ext3_fs_sb.h index b65f0288b842..e024e38248ff 100644 --- a/include/linux/ext3_fs_sb.h +++ b/include/linux/ext3_fs_sb.h | |||
| @@ -83,4 +83,10 @@ struct ext3_sb_info { | |||
| 83 | #endif | 83 | #endif |
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | static inline spinlock_t * | ||
| 87 | sb_bgl_lock(struct ext3_sb_info *sbi, unsigned int block_group) | ||
| 88 | { | ||
| 89 | return bgl_lock_ptr(&sbi->s_blockgroup_lock, block_group); | ||
| 90 | } | ||
| 91 | |||
| 86 | #endif /* _LINUX_EXT3_FS_SB */ | 92 | #endif /* _LINUX_EXT3_FS_SB */ |
