[Ocfs2-devel] [PATCH 7/7] ocfs2: New slot map format

Mark Fasheh mark.fasheh at oracle.com
Mon Dec 31 17:14:22 PST 2007


On Thu, Dec 06, 2007 at 09:19:47PM -0800, Joel Becker wrote:
> diff --git a/fs/ocfs2/slot_map.c b/fs/ocfs2/slot_map.c
> index a458d08..005a7dc 100644
> --- a/fs/ocfs2/slot_map.c
> +++ b/fs/ocfs2/slot_map.c
> @@ -51,6 +51,8 @@ struct ocfs2_slot {
>  struct ocfs2_slot_info_real {
>  	spinlock_t si_lock;
>  
> +	int si_extended;
> +	int si_slots_per_block;
>  	struct inode *si_inode;
>  	unsigned int si_blocks;
>  	struct buffer_head **si_bh;
> @@ -85,15 +87,33 @@ static void ocfs2_set_slot(struct ocfs2_slot_info_real *si,
>  	si->si_slots[slot_num].sl_node_num = node_num;
>  }
>  
> +/* This version is for the extended slot map */
> +static void ocfs2_update_slot_info_extended(struct ocfs2_slot_info_real *si)
> +{
> +	int b, i, slotno;
> +	struct ocfs2_slot_map_extended *se;
> +
> +	slotno = 0;
> +	for (b = 0; b < si->si_blocks; b++) {
> +		se = (struct ocfs2_slot_map_extended *)si->si_bh[b]->b_data;
> +		for (i = 0;
> +		     (i < si->si_slots_per_block) && (slotno < si->si_num_slots);
> +		     i++, slotno++) {
> +			if (se->se_slots[i].es_valid)
> +				ocfs2_set_slot(si, slotno,
> +					       le32_to_cpu(se->se_slots[i].es_node_num));
> +			else
> +				ocfs2_invalidate_slot(si, slotno);
> +		}
> +	}
> +}
> +
>  /* post the slot information on disk into our slot_info struct. */
> -static void ocfs2_update_slot_info(struct ocfs2_slot_info_real *si)
> +static void ocfs2_update_slot_info_old(struct ocfs2_slot_info_real *si)
>  {
>  	int i;
>  	struct ocfs2_slot_map *sm;
>  
> -	/* we don't read the slot block here as ocfs2_super_lock
> -	 * should've made sure we have the most recent copy. */
> -	spin_lock(&si->si_lock);
>  	sm = (struct ocfs2_slot_map *)si->si_bh[0]->b_data;
>  
>  	for (i = 0; i < si->si_num_slots; i++) {
> @@ -102,7 +122,17 @@ static void ocfs2_update_slot_info(struct ocfs2_slot_info_real *si)
>  		else
>  			ocfs2_set_slot(si, i, le16_to_cpu(sm->sm_slots[i]));
>  	}
> +}
>  
> +static void ocfs2_update_slot_info(struct ocfs2_slot_info_real *si)
> +{
> +	/* we don't read the slot block here as ocfs2_super_lock
> +	 * should've made sure we have the most recent copy. */

Should probably update the comment while you're moving it.
	--Mark

--
Mark Fasheh
Principal Software Developer, Oracle
mark.fasheh at oracle.com



More information about the Ocfs2-devel mailing list