diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-09-23 14:59:30 -0700 |
---|---|---|
committer | Dan Pasanen <dan.pasanen@gmail.com> | 2015-11-12 09:37:26 -0600 |
commit | 714e1516f4363e6be4b0ca026b7c3df2265bbbfb (patch) | |
tree | 52e996ac418466dd4087a12aad1fc2cf187fc900 | |
parent | e45bfe030effd537119df7666cb573b092714575 (diff) | |
download | android_external_f2fs-tools-714e1516f4363e6be4b0ca026b7c3df2265bbbfb.tar.gz android_external_f2fs-tools-714e1516f4363e6be4b0ca026b7c3df2265bbbfb.tar.bz2 android_external_f2fs-tools-714e1516f4363e6be4b0ca026b7c3df2265bbbfb.zip |
mkfs.f2fs: fix wrong ovp space calculation on large section
If a section consists of multiple segments, we should change the equation
to apply it on reserved space.
On 128GB,
option overprovision area reserved area
-o5 -s128 9094 6144
-o5 -s64 6179 3072
-o5 -s1 3309 48
-o1 -s128 27009 26624
-o1 -s64 13831 13312
-o1 -s1 858 208
-s1 858 208
-s64 * 13831 13312
-s128 * 27009 26624
: * should be wrong.
After patch,
-s1 (ovp:1%) 858 208
-s64 (ovp:4%) 6172 3712
-s128 (ovp:6%) 8721 5120
Change-Id: Iba51129508f8938765421155cc5b6ab81ea064bb
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r-- | mkfs/f2fs_format.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c index 21e74fe..2d4ab09 100644 --- a/mkfs/f2fs_format.c +++ b/mkfs/f2fs_format.c @@ -171,7 +171,8 @@ static u_int32_t get_best_overprovision(void) } for (; candidate <= end; candidate += diff) { - reserved = 2 * (100 / candidate + 1) + 6; + reserved = (2 * (100 / candidate + 1) + 6) * + get_sb(segs_per_sec); ovp = (get_sb(segment_count_main) - reserved) * candidate / 100; space = get_sb(segment_count_main) - reserved - ovp; if (max_space < space) { |