diff options
Diffstat (limited to 'fs/ocfs2/resize.c')
| -rw-r--r-- | fs/ocfs2/resize.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/ocfs2/resize.c b/fs/ocfs2/resize.c index d65d43c61857..c4a4016d3866 100644 --- a/fs/ocfs2/resize.c +++ b/fs/ocfs2/resize.c @@ -91,6 +91,8 @@ static int ocfs2_update_last_group_and_inode(handle_t *handle,  	u16 cl_bpc = le16_to_cpu(cl->cl_bpc);  	u16 cl_cpg = le16_to_cpu(cl->cl_cpg);  	u16 old_bg_clusters; +	u16 contig_bits; +	__le16 old_bg_contig_free_bits;  	trace_ocfs2_update_last_group_and_inode(new_clusters,  						first_new_cluster); @@ -122,6 +124,11 @@ static int ocfs2_update_last_group_and_inode(handle_t *handle,  		le16_add_cpu(&group->bg_free_bits_count, -1 * backups);  	} +	contig_bits = ocfs2_find_max_contig_free_bits(group->bg_bitmap, +					le16_to_cpu(group->bg_bits), 0); +	old_bg_contig_free_bits = group->bg_contig_free_bits; +	group->bg_contig_free_bits = cpu_to_le16(contig_bits); +  	ocfs2_journal_dirty(handle, group_bh);  	/* update the inode accordingly. */ @@ -160,6 +167,7 @@ out_rollback:  		le16_add_cpu(&group->bg_free_bits_count, backups);  		le16_add_cpu(&group->bg_bits, -1 * num_bits);  		le16_add_cpu(&group->bg_free_bits_count, -1 * num_bits); +		group->bg_contig_free_bits = old_bg_contig_free_bits;  	}  out:  	if (ret)  |