aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYunlei He <heyunlei@huawei.com>2016-01-08 10:25:29 +0800
committerGreg Wallace <greg@gregtwallace.com>2016-01-19 22:02:21 -0500
commit54dabbe65c4c73172d02127402967fd2b9abf8ab (patch)
tree540e70c1db4f020c65198a5425d55faa6f565e8f
parentb5476e1c905722efdee760f808f7098093463e45 (diff)
downloadandroid_external_f2fs-tools-54dabbe65c4c73172d02127402967fd2b9abf8ab.tar.gz
android_external_f2fs-tools-54dabbe65c4c73172d02127402967fd2b9abf8ab.tar.bz2
android_external_f2fs-tools-54dabbe65c4c73172d02127402967fd2b9abf8ab.zip
mkfs.f2fs: introduce zone align for main area
This patch calculate main area begin from a new zone, avoid misalign if segments per zone is not 1. Change-Id: Ibda5849c9465fe811aaca6d217e8b7f2971e1c5a Signed-off-by: Yunlei He <heyunlei@huawei.com> Signed-off-by: Shuoran Liu <liushuoran@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--mkfs/f2fs_format.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index 66d7342..fd61757 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -126,7 +126,8 @@ static int f2fs_prepare_super_block(void)
u_int32_t sit_segments;
u_int32_t blocks_for_sit, blocks_for_nat, blocks_for_ssa;
u_int32_t total_valid_blks_available;
- u_int64_t zone_align_start_offset, diff, total_meta_segments;
+ u_int64_t zone_align_start_offset, diff;
+ u_int64_t total_meta_zones, total_meta_segments;
u_int32_t sit_bitmap_size, max_sit_bitmap_size;
u_int32_t max_nat_bitmap_size, max_nat_segments;
u_int32_t total_zones;
@@ -259,16 +260,16 @@ static int f2fs_prepare_super_block(void)
set_sb(segment_count_ssa, get_sb(segment_count_ssa) +
(config.segs_per_zone - diff));
- set_sb(main_blkaddr, get_sb(ssa_blkaddr) + get_sb(segment_count_ssa) *
- config.blks_per_seg);
+ total_meta_zones = ZONE_ALIGN(total_meta_segments *
+ config.blks_per_seg);
- set_sb(segment_count_main, get_sb(segment_count) -
- (get_sb(segment_count_ckpt) +
- get_sb(segment_count_sit) +
- get_sb(segment_count_nat) +
- get_sb(segment_count_ssa)));
+ set_sb(main_blkaddr, get_sb(segment0_blkaddr) + total_meta_zones *
+ config.segs_per_zone * config.blks_per_seg);
+
+ total_zones = get_sb(segment_count) / (config.segs_per_zone) -
+ total_meta_zones;
- set_sb(section_count, get_sb(segment_count_main) / config.segs_per_sec);
+ set_sb(section_count, total_zones * config.secs_per_zone);
set_sb(segment_count_main, get_sb(section_count) * config.segs_per_sec);
@@ -297,7 +298,6 @@ static int f2fs_prepare_super_block(void)
set_sb(meta_ino, 2);
set_sb(root_ino, 3);
- total_zones = get_sb(segment_count_main) / (config.segs_per_zone);
if (total_zones <= 6) {
MSG(1, "\tError: %d zones: Need more zones \
by shrinking zone size\n", total_zones);