forked from openwrt/openwrt
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added two upstream mailing list patches that fix behavior under big endian systems. Issue was present since version 1.11.0. Tested on Turris Omnia. Original discussion: openwrt#1575 Signed-off-by: Rosen Penev <rosenp@gmail.com>
- Loading branch information
Showing
3 changed files
with
61 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
package/utils/f2fs-tools/patches/010-fsck-Fix-big-endian-platforms.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
From 46772bbf0d978512423923da461ceb6b6e791c91 Mon Sep 17 00:00:00 2001 | ||
From: Rosen Penev <rosenp@gmail.com> | ||
Date: Fri, 7 Dec 2018 17:39:03 -0800 | ||
Subject: [PATCH] fsck: Fix big endian platforms | ||
|
||
Since "fsck.f2fs: integrate sanity_check_inode to __check_inode_mode", | ||
big endian platforms have been broken due to an endianness bug. | ||
|
||
More info: https://github.com/openwrt/openwrt/pull/1575 | ||
|
||
Signed-off-by: Rosen Penev <rosenp@gmail.com> | ||
--- | ||
fsck/fsck.c | 4 ++-- | ||
1 file changed, 2 insertions(+), 2 deletions(-) | ||
|
||
--- a/fsck/fsck.c | ||
+++ b/fsck/fsck.c | ||
@@ -339,7 +339,7 @@ out: | ||
return ret; | ||
} | ||
|
||
-static int __check_inode_mode(u32 nid, enum FILE_TYPE ftype, u32 mode) | ||
+static int __check_inode_mode(u32 nid, enum FILE_TYPE ftype, u16 mode) | ||
{ | ||
if (ftype >= F2FS_FT_MAX) | ||
return 0; | ||
@@ -457,7 +457,7 @@ static int sanity_check_nid(struct f2fs_ | ||
return 0; | ||
|
||
if (ntype == TYPE_INODE && | ||
- __check_inode_mode(nid, ftype, le32_to_cpu(node_blk->i.i_mode))) | ||
+ __check_inode_mode(nid, ftype, le16_to_cpu(node_blk->i.i_mode))) | ||
return -EINVAL; | ||
|
||
/* workaround to fix later */ |
24 changes: 24 additions & 0 deletions
24
package/utils/f2fs-tools/patches/020-dump.f2fs-fix-incorrect-endian-conversion.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
From a1241763f50d20efc42910e922b9c8845814f024 Mon Sep 17 00:00:00 2001 | ||
From: Chao Yu <yuchao0@huawei.com> | ||
Date: Sun, 9 Dec 2018 19:41:52 -0800 | ||
Subject: [PATCH] dump.f2fs: fix incorrect endian conversion | ||
|
||
f2fs_inode.i_mode is variable of __le16 type, during endian converison, | ||
it should to use le16_to_cpu instead of le32_to_cpu, fix it. | ||
|
||
Signed-off-by: Chao Yu <yuchao0@huawei.com> | ||
--- | ||
fsck/dump.c | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
--- a/fsck/dump.c | ||
+++ b/fsck/dump.c | ||
@@ -407,7 +407,7 @@ static void dump_file(struct f2fs_sb_inf | ||
struct f2fs_node *node_blk, int force) | ||
{ | ||
struct f2fs_inode *inode = &node_blk->i; | ||
- u32 imode = le32_to_cpu(inode->i_mode); | ||
+ u32 imode = le16_to_cpu(inode->i_mode); | ||
u32 namelen = le32_to_cpu(inode->i_namelen); | ||
char name[F2FS_NAME_LEN + 1] = {0}; | ||
char path[1024] = {0}; |