* [PATCH v4 2/2] sload.f2fs: introduce f2fs_sparse_initialize_meta()
@ 2019-05-06 8:58 Chao Yu
2019-05-14 12:17 ` 答复: " zhaowuyun via Linux-f2fs-devel
0 siblings, 1 reply; 2+ messages in thread
From: Chao Yu @ 2019-05-06 8:58 UTC (permalink / raw)
To: linux-f2fs-devel; +Cc: jaegeuk, zhaowuyun
This patch fixes to initialize NAT/SIT/CP.payload region in sparse
file mode for sload.
Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
- move initialize_meta() before do_umount().
fsck/fsck.h | 1 +
fsck/main.c | 4 +++
fsck/mount.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 75 insertions(+)
diff --git a/fsck/fsck.h b/fsck/fsck.h
index dd831de..4db14af 100644
--- a/fsck/fsck.h
+++ b/fsck/fsck.h
@@ -181,6 +181,7 @@ extern int fsck_verify(struct f2fs_sb_info *);
extern void fsck_free(struct f2fs_sb_info *);
extern int f2fs_do_mount(struct f2fs_sb_info *);
extern void f2fs_do_umount(struct f2fs_sb_info *);
+extern int f2fs_sparse_initialize_meta(struct f2fs_sb_info *);
extern void flush_journal_entries(struct f2fs_sb_info *);
extern void zero_journal_entries(struct f2fs_sb_info *);
diff --git a/fsck/main.c b/fsck/main.c
index afdfec9..d844820 100644
--- a/fsck/main.c
+++ b/fsck/main.c
@@ -813,6 +813,10 @@ fsck_again:
if (do_sload(sbi))
goto out_err;
+ ret = f2fs_sparse_initialize_meta(sbi);
+ if (ret < 0)
+ goto out_err;
+
f2fs_do_umount(sbi);
/* fsck to fix missing quota */
diff --git a/fsck/mount.c b/fsck/mount.c
index 843742e..230f330 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -2721,3 +2721,73 @@ void f2fs_do_umount(struct f2fs_sb_info *sbi)
free(sbi->ckpt);
free(sbi->raw_super);
}
+
+#ifdef WITH_ANDROID
+int f2fs_sparse_initialize_meta(struct f2fs_sb_info *sbi)
+{
+ struct f2fs_super_block *sb = sbi->raw_super;
+ u_int32_t sit_seg_count, sit_size;
+ u_int32_t nat_seg_count, nat_size;
+ u_int64_t sit_seg_addr, nat_seg_addr, payload_addr;
+ u_int32_t seg_size = 1 << get_sb(log_blocks_per_seg);
+ int ret;
+
+ if (!c.sparse_mode)
+ return 0;
+
+ sit_seg_addr = get_sb(sit_blkaddr);
+ sit_seg_count = get_sb(segment_count_sit);
+ sit_size = sit_seg_count * seg_size;
+
+ DBG(1, "\tSparse: filling sit area at block offset: 0x%08"PRIx64" len: %u\n",
+ sit_seg_addr, sit_size);
+ ret = dev_fill(NULL, sit_seg_addr * F2FS_BLKSIZE,
+ sit_size * F2FS_BLKSIZE);
+ if (ret) {
+ MSG(1, "\tError: While zeroing out the sit area "
+ "on disk!!!\n");
+ return -1;
+ }
+
+ nat_seg_addr = get_sb(nat_blkaddr);
+ nat_seg_count = get_sb(segment_count_nat);
+ nat_size = nat_seg_count * seg_size;
+
+ DBG(1, "\tSparse: filling nat area at block offset 0x%08"PRIx64" len: %u\n",
+ nat_seg_addr, nat_size);
+ ret = dev_fill(NULL, nat_seg_addr * F2FS_BLKSIZE,
+ nat_size * F2FS_BLKSIZE);
+ if (ret) {
+ MSG(1, "\tError: While zeroing out the nat area "
+ "on disk!!!\n");
+ return -1;
+ }
+
+ payload_addr = get_sb(segment0_blkaddr) + 1;
+
+ DBG(1, "\tSparse: filling bitmap area at block offset 0x%08"PRIx64" len: %u\n",
+ payload_addr, get_sb(cp_payload));
+ ret = dev_fill(NULL, payload_addr * F2FS_BLKSIZE,
+ get_sb(cp_payload) * F2FS_BLKSIZE);
+ if (ret) {
+ MSG(1, "\tError: While zeroing out the nat/sit bitmap area "
+ "on disk!!!\n");
+ return -1;
+ }
+
+ payload_addr += seg_size;
+
+ DBG(1, "\tSparse: filling bitmap area at block offset 0x%08"PRIx64" len: %u\n",
+ payload_addr, get_sb(cp_payload));
+ ret = dev_fill(NULL, payload_addr * F2FS_BLKSIZE,
+ get_sb(cp_payload) * F2FS_BLKSIZE);
+ if (ret) {
+ MSG(1, "\tError: While zeroing out the nat/sit bitmap area "
+ "on disk!!!\n");
+ return -1;
+ }
+ return 0;
+}
+#else
+int f2fs_sparse_initialize_meta(struct f2fs_sb_info *sbi) { return 0; }
+#endif
--
2.18.0.rc1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* 答复: [PATCH v4 2/2] sload.f2fs: introduce f2fs_sparse_initialize_meta()
2019-05-06 8:58 [PATCH v4 2/2] sload.f2fs: introduce f2fs_sparse_initialize_meta() Chao Yu
@ 2019-05-14 12:17 ` zhaowuyun via Linux-f2fs-devel
0 siblings, 0 replies; 2+ messages in thread
From: zhaowuyun via Linux-f2fs-devel @ 2019-05-14 12:17 UTC (permalink / raw)
To: 'Chao Yu', linux-f2fs-devel; +Cc: jaegeuk
Hi Chao,
using the same steps,
make the userdata partition dirty and fastboot-flash userdata.img to see the mount is successful or not
to test the patch, confirm that issue is fixed by this patch.
Hope to see it accepted.
Best Wishes,
Zac (zhaowuyun@wingtech.com)
>
> This patch fixes to initialize NAT/SIT/CP.payload region in sparse file mode for
> sload.
>
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
> - move initialize_meta() before do_umount().
> fsck/fsck.h | 1 +
> fsck/main.c | 4 +++
> fsck/mount.c | 70
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 75 insertions(+)
>
> diff --git a/fsck/fsck.h b/fsck/fsck.h
> index dd831de..4db14af 100644
> --- a/fsck/fsck.h
> +++ b/fsck/fsck.h
> @@ -181,6 +181,7 @@ extern int fsck_verify(struct f2fs_sb_info *); extern
> void fsck_free(struct f2fs_sb_info *); extern int f2fs_do_mount(struct
> f2fs_sb_info *); extern void f2fs_do_umount(struct f2fs_sb_info *);
> +extern int f2fs_sparse_initialize_meta(struct f2fs_sb_info *);
>
> extern void flush_journal_entries(struct f2fs_sb_info *); extern void
> zero_journal_entries(struct f2fs_sb_info *); diff --git a/fsck/main.c
> b/fsck/main.c index afdfec9..d844820 100644
> --- a/fsck/main.c
> +++ b/fsck/main.c
> @@ -813,6 +813,10 @@ fsck_again:
> if (do_sload(sbi))
> goto out_err;
>
> + ret = f2fs_sparse_initialize_meta(sbi);
> + if (ret < 0)
> + goto out_err;
> +
> f2fs_do_umount(sbi);
>
> /* fsck to fix missing quota */
> diff --git a/fsck/mount.c b/fsck/mount.c index 843742e..230f330 100644
> --- a/fsck/mount.c
> +++ b/fsck/mount.c
> @@ -2721,3 +2721,73 @@ void f2fs_do_umount(struct f2fs_sb_info *sbi)
> free(sbi->ckpt);
> free(sbi->raw_super);
> }
> +
> +#ifdef WITH_ANDROID
> +int f2fs_sparse_initialize_meta(struct f2fs_sb_info *sbi) {
> + struct f2fs_super_block *sb = sbi->raw_super;
> + u_int32_t sit_seg_count, sit_size;
> + u_int32_t nat_seg_count, nat_size;
> + u_int64_t sit_seg_addr, nat_seg_addr, payload_addr;
> + u_int32_t seg_size = 1 << get_sb(log_blocks_per_seg);
> + int ret;
> +
> + if (!c.sparse_mode)
> + return 0;
> +
> + sit_seg_addr = get_sb(sit_blkaddr);
> + sit_seg_count = get_sb(segment_count_sit);
> + sit_size = sit_seg_count * seg_size;
> +
> + DBG(1, "\tSparse: filling sit area at block offset: 0x%08"PRIx64"
> len: %u\n",
> + sit_seg_addr,
> sit_size);
> + ret = dev_fill(NULL, sit_seg_addr * F2FS_BLKSIZE,
> + sit_size * F2FS_BLKSIZE);
> + if (ret) {
> + MSG(1, "\tError: While zeroing out the sit area "
> + "on disk!!!\n");
> + return -1;
> + }
> +
> + nat_seg_addr = get_sb(nat_blkaddr);
> + nat_seg_count = get_sb(segment_count_nat);
> + nat_size = nat_seg_count * seg_size;
> +
> + DBG(1, "\tSparse: filling nat area at block offset 0x%08"PRIx64"
> len: %u\n",
> + nat_seg_addr,
> nat_size);
> + ret = dev_fill(NULL, nat_seg_addr * F2FS_BLKSIZE,
> + nat_size * F2FS_BLKSIZE);
> + if (ret) {
> + MSG(1, "\tError: While zeroing out the nat area "
> + "on disk!!!\n");
> + return -1;
> + }
> +
> + payload_addr = get_sb(segment0_blkaddr) + 1;
> +
> + DBG(1, "\tSparse: filling bitmap area at block offset 0x%08"PRIx64"
> len: %u\n",
> + payload_addr, get_sb(cp_payload));
> + ret = dev_fill(NULL, payload_addr * F2FS_BLKSIZE,
> + get_sb(cp_payload) * F2FS_BLKSIZE);
> + if (ret) {
> + MSG(1, "\tError: While zeroing out the nat/sit bitmap area "
> + "on disk!!!\n");
> + return -1;
> + }
> +
> + payload_addr += seg_size;
> +
> + DBG(1, "\tSparse: filling bitmap area at block offset 0x%08"PRIx64"
> len: %u\n",
> + payload_addr, get_sb(cp_payload));
> + ret = dev_fill(NULL, payload_addr * F2FS_BLKSIZE,
> + get_sb(cp_payload) * F2FS_BLKSIZE);
> + if (ret) {
> + MSG(1, "\tError: While zeroing out the nat/sit bitmap area "
> + "on disk!!!\n");
> + return -1;
> + }
> + return 0;
> +}
> +#else
> +int f2fs_sparse_initialize_meta(struct f2fs_sb_info *sbi) { return 0; }
> +#endif
> --
> 2.18.0.rc1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-05-14 12:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-06 8:58 [PATCH v4 2/2] sload.f2fs: introduce f2fs_sparse_initialize_meta() Chao Yu
2019-05-14 12:17 ` 答复: " zhaowuyun via Linux-f2fs-devel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).