From: Stijn Tintel Date: Thu, 24 Aug 2017 07:04:15 +0000 (+0300) Subject: f2fs-tools: fix mkfs.f2fs on big-endian systems X-Git-Tag: v18.06.0-rc1~2347 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=cdb494fdc2d3399e698893ff0cfd06d3c802364f f2fs-tools: fix mkfs.f2fs on big-endian systems Fixes: FS#749 Signed-off-by: Stijn Tintel --- diff --git a/package/utils/f2fs-tools/Makefile b/package/utils/f2fs-tools/Makefile index 5cef40ac23..8a27c47adf 100644 --- a/package/utils/f2fs-tools/Makefile +++ b/package/utils/f2fs-tools/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=f2fs-tools PKG_VERSION:=1.8.0 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_LICENSE:=GPLv2 diff --git a/package/utils/f2fs-tools/patches/100-f2fs-WARNING-at-fs-f2fs-segment.c-718-update_sit_ent.patch b/package/utils/f2fs-tools/patches/100-f2fs-WARNING-at-fs-f2fs-segment.c-718-update_sit_ent.patch new file mode 100644 index 0000000000..d4e25397a3 --- /dev/null +++ b/package/utils/f2fs-tools/patches/100-f2fs-WARNING-at-fs-f2fs-segment.c-718-update_sit_ent.patch @@ -0,0 +1,66 @@ +From 31873d5cdf8a97d5f7921451c54f6d293293c6cc Mon Sep 17 00:00:00 2001 +From: Jaegeuk Kim +Date: Wed, 23 Aug 2017 13:33:00 -0700 +Subject: [PATCH] mkfs.f2fs: fix missing cpu_to_le64 for checkpoint version + +The error on mips was reported by Stijn as follow. + +Commit 8399a29df92d6867d226df362edbf2e0efa527c1 in f2fs-tools +("mkfs.f2fs: give random checkpoint version") causes a bug when mounting +a filesystem created with it on a MIPS64 device running a 4.4(.83) +kernel. The following kernel warning appears several times per second, +for 30 seconds: + +[ 23.837262] ------------[ cut here ]------------ +[ 23.842039] WARNING: CPU: 0 PID: 935 at fs/f2fs/segment.c:718 +update_sit_entry+0x1c0/0x2b0() +[ 23.850507] Modules linked in: pppoe ppp_async l2tp_ppp iptable_nat +[ 24.174064] Call Trace: +[ 24.176527] [] show_stack+0x68/0xb4 +[ 24.181595] [] dump_stack+0x8c/0xc4 +[ 24.186660] [] warn_slowpath_common+0xa0/0xd0 +[ 24.192597] [] update_sit_entry+0x1c0/0x2b0 +[ 24.198353] [] refresh_sit_entry+0x70/0xf8 +[ 24.204022] [] allocate_data_block+0x1f0/0x310 +[ 24.210038] [] do_write_page+0x29c/0x2bc +[ 24.215532] [] write_data_page+0xa0/0xd8 +[ 24.221028] [] do_write_data_page+0xe4/0x384 +[ 24.226870] [] f2fs_write_data_page+0x208/0x464 +[ 24.232972] [] __f2fs_writepage+0x1c/0x74 +[ 24.238553] [] +f2fs_write_cache_pages.constprop.7+0x250/0x394 +[ 24.245869] [] f2fs_write_data_pages+0x130/0x1b0 +[ 24.252066] [] __filemap_fdatawrite_range+0xa0/0xd4 +[ 24.258515] [] sync_dirty_dir_inodes+0x94/0xd8 +[ 24.264530] [] write_checkpoint+0x108/0xb9c +[ 24.270283] [] f2fs_sync_fs+0x68/0xb0 +[ 24.275526] [] f2fs_sync_file+0x2e8/0x518 +[ 24.281107] [] do_fsync+0x38/0x70 +[ 24.285992] [] SyS_fsync+0x14/0x20 +[ 24.290972] [] syscall_common+0x34/0x58 +[ 24.296372] +[ 24.298096] ---[ end trace fd3ac44449b218ab ]--- + +Fix: 8399a29df92d68 ("mkfs.f2fs: give random checkpoint version") +Reported-And-Tested-by: Stijn Tintel +Signed-off-by: Jaegeuk Kim +--- + mkfs/f2fs_format.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c +index 92876b8..b379e80 100644 +--- a/mkfs/f2fs_format.c ++++ b/mkfs/f2fs_format.c +@@ -546,7 +546,7 @@ static int f2fs_write_check_point_pack(void) + } + + /* 1. cp page 1 of checkpoint pack 1 */ +- cp->checkpoint_ver = rand() | 0x1; ++ cp->checkpoint_ver = cpu_to_le64(rand() | 0x1); + set_cp(cur_node_segno[0], c.cur_seg[CURSEG_HOT_NODE]); + set_cp(cur_node_segno[1], c.cur_seg[CURSEG_WARM_NODE]); + set_cp(cur_node_segno[2], c.cur_seg[CURSEG_COLD_NODE]); +-- +2.13.5 +