On 03/05, Chao Yu wrote:
> This patch turns off nat_bits feature by default in Android,
> for other scenario, keep it on and keep an eye on it.
> 
> Signed-off-by: Chao Yu <c...@kernel.org>
> ---
>  fsck/mount.c            | 3 ++-
>  include/f2fs_fs.h       | 6 ++++++
>  mkfs/f2fs_format.c      | 3 ++-
>  mkfs/f2fs_format_main.c | 1 +
>  4 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/fsck/mount.c b/fsck/mount.c
> index a189ba7..2f4c631 100644
> --- a/fsck/mount.c
> +++ b/fsck/mount.c
> @@ -1708,7 +1708,8 @@ u32 update_nat_bits_flags(struct f2fs_super_block *sb,
>       nat_bits_bytes = get_sb(segment_count_nat) << 5;
>       nat_bits_blocks = F2FS_BYTES_TO_BLK((nat_bits_bytes << 1) + 8 +
>                                               F2FS_BLKSIZE - 1);
> -     if (get_cp(cp_pack_total_block_count) <=
> +     if (!(c.disabled_feature & F2FS_FEATURE_NAT_BITS) &&

We need to set c.diabled_feature |= F2FS_FEATURE_NAT_BITS in fsck and others?

> +                     get_cp(cp_pack_total_block_count) <=
>                       (1 << get_sb(log_blocks_per_seg)) - nat_bits_blocks)
>               flags |= CP_NAT_BITS_FLAG;
>       else
> diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
> index 0cb9228..bb40adc 100644
> --- a/include/f2fs_fs.h
> +++ b/include/f2fs_fs.h
> @@ -1471,6 +1471,11 @@ enum {
>  
>  #define MAX_CACHE_SUMS                       8
>  
> +/* feature list in Android */
> +enum {
> +     F2FS_FEATURE_NAT_BITS = 0x0001,
> +};
> +
>  struct f2fs_configuration {
>       uint32_t conf_reserved_sections;
>       uint32_t reserved_segments;
> @@ -1537,6 +1542,7 @@ struct f2fs_configuration {
>       int large_nat_bitmap;
>       int fix_chksum;                 /* fix old cp.chksum position */
>       unsigned int feature;                   /* defined features */
> +     unsigned int disabled_feature;  /* disabled feature, used for Android 
> only */
>       unsigned int quota_bits;        /* quota bits */
>       time_t fixed_time;
>       int roll_forward;
> diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
> index 6635eed..c28ebb0 100644
> --- a/mkfs/f2fs_format.c
> +++ b/mkfs/f2fs_format.c
> @@ -893,7 +893,8 @@ static int f2fs_write_check_point_pack(void)
>       /* cp page (2), data summaries (1), node summaries (3) */
>       set_cp(cp_pack_total_block_count, 6 + get_sb(cp_payload));
>       flags = CP_UMOUNT_FLAG | CP_COMPACT_SUM_FLAG;
> -     if (get_cp(cp_pack_total_block_count) <=
> +     if (!(c.disabled_feature & F2FS_FEATURE_NAT_BITS) &&
> +                     get_cp(cp_pack_total_block_count) <=
>                       (1 << get_sb(log_blocks_per_seg)) - nat_bits_blocks)
>               flags |= CP_NAT_BITS_FLAG;
>  
> diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c
> index 9407f5b..5b4569d 100644
> --- a/mkfs/f2fs_format_main.c
> +++ b/mkfs/f2fs_format_main.c
> @@ -143,6 +143,7 @@ static void add_default_options(void)
>               force_overwrite = 1;
>               c.wanted_sector_size = F2FS_BLKSIZE;
>               c.root_uid = c.root_gid = 0;
> +             c.disabled_feature |= F2FS_FEATURE_NAT_BITS;
>  
>               /* RO doesn't need any other features */
>               if (c.feature & F2FS_FEATURE_RO)
> -- 
> 2.48.1


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to