[Ocfs2-devel] [PATCH 2/7] ocfs2: Wrap all other access to
ocfs2_slot_info.
Mark Fasheh
mark.fasheh at oracle.com
Mon Dec 10 14:33:24 PST 2007
On Thu, Dec 06, 2007 at 09:19:42PM -0800, Joel Becker wrote:
> diff --git a/fs/ocfs2/slot_map.c b/fs/ocfs2/slot_map.c
> index f5727b8..a4f2c02 100644
> --- a/fs/ocfs2/slot_map.c
> +++ b/fs/ocfs2/slot_map.c
> @@ -42,14 +42,30 @@
>
> #include "buffer_head_io.h"
>
> -static s16 __ocfs2_node_num_to_slot(struct ocfs2_slot_info *si,
> +struct ocfs2_slot_info_real {
> + spinlock_t si_lock;
> +
> + struct inode *si_inode;
> + struct buffer_head *si_bh;
> + unsigned int si_num_slots;
> + unsigned int si_size;
> + s16 si_global_node_nums[OCFS2_MAX_SLOTS];
> +};
> +
> +static inline struct ocfs2_slot_info_real *to_slot_info(struct ocfs2_super *osb)
> +{
> + return (struct ocfs2_slot_info_real *)osb->slot_info;
> +}
> +
...
> diff --git a/fs/ocfs2/slot_map.h b/fs/ocfs2/slot_map.h
> index b029ffd..14b065b 100644
> --- a/fs/ocfs2/slot_map.h
> +++ b/fs/ocfs2/slot_map.h
> @@ -29,12 +29,6 @@
>
> struct ocfs2_slot_info {
> spinlock_t si_lock;
> -
> - struct inode *si_inode;
> - struct buffer_head *si_bh;
> - unsigned int si_num_slots;
> - unsigned int si_size;
> - s16 si_global_node_nums[OCFS2_MAX_SLOTS];
> };
Ok, so we need to either use 'osb->osb_lock' for slot info locking and drop
ocfs2_slot_info from slot_map.h completely, or just leave the definition in
slot_map.h. As it stands in this patch, if we add anything to 'struct
ocfs2_slot_info' or move 'si_lock' around in 'struct ocfs2_slot_info_real'
things will blow up :(
--Mark
--
Mark Fasheh
Senior Software Developer, Oracle
mark.fasheh at oracle.com
More information about the Ocfs2-devel
mailing list