mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	f2fs-tools: fix mkfs.f2fs on big-endian systems
Fixes: FS#749 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
		
							parent
							
								
									252c8ddf14
								
							
						
					
					
						commit
						cdb494fdc2
					
				@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,66 @@
 | 
			
		||||
From 31873d5cdf8a97d5f7921451c54f6d293293c6cc Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Jaegeuk Kim <jaegeuk@kernel.org>
 | 
			
		||||
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] [<ffffffff81126e14>] show_stack+0x68/0xb4
 | 
			
		||||
[   24.181595] [<ffffffff81321fc4>] dump_stack+0x8c/0xc4
 | 
			
		||||
[   24.186660] [<ffffffff8113d004>] warn_slowpath_common+0xa0/0xd0
 | 
			
		||||
[   24.192597] [<ffffffff812e0148>] update_sit_entry+0x1c0/0x2b0
 | 
			
		||||
[   24.198353] [<ffffffff812e0a70>] refresh_sit_entry+0x70/0xf8
 | 
			
		||||
[   24.204022] [<ffffffff812e251c>] allocate_data_block+0x1f0/0x310
 | 
			
		||||
[   24.210038] [<ffffffff812e28d8>] do_write_page+0x29c/0x2bc
 | 
			
		||||
[   24.215532] [<ffffffff812e2a88>] write_data_page+0xa0/0xd8
 | 
			
		||||
[   24.221028] [<ffffffff812d844c>] do_write_data_page+0xe4/0x384
 | 
			
		||||
[   24.226870] [<ffffffff812d88f4>] f2fs_write_data_page+0x208/0x464
 | 
			
		||||
[   24.232972] [<ffffffff812d5184>] __f2fs_writepage+0x1c/0x74
 | 
			
		||||
[   24.238553] [<ffffffff812d54dc>]
 | 
			
		||||
f2fs_write_cache_pages.constprop.7+0x250/0x394
 | 
			
		||||
[   24.245869] [<ffffffff812d57f4>] f2fs_write_data_pages+0x130/0x1b0
 | 
			
		||||
[   24.252066] [<ffffffff811a9f80>] __filemap_fdatawrite_range+0xa0/0xd4
 | 
			
		||||
[   24.258515] [<ffffffff812d2338>] sync_dirty_dir_inodes+0x94/0xd8
 | 
			
		||||
[   24.264530] [<ffffffff812d2484>] write_checkpoint+0x108/0xb9c
 | 
			
		||||
[   24.270283] [<ffffffff812cc398>] f2fs_sync_fs+0x68/0xb0
 | 
			
		||||
[   24.275526] [<ffffffff812c641c>] f2fs_sync_file+0x2e8/0x518
 | 
			
		||||
[   24.281107] [<ffffffff81213ff4>] do_fsync+0x38/0x70
 | 
			
		||||
[   24.285992] [<ffffffff812142e8>] SyS_fsync+0x14/0x20
 | 
			
		||||
[   24.290972] [<ffffffff81103950>] 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 <stijn@linux-ipv6.be>
 | 
			
		||||
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
 | 
			
		||||
---
 | 
			
		||||
 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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user