public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: sys-fs/erofs-utils/files/, sys-fs/erofs-utils/
@ 2022-01-18  7:58 Florian Schmaus
  0 siblings, 0 replies; 2+ messages in thread
From: Florian Schmaus @ 2022-01-18  7:58 UTC (permalink / raw
  To: gentoo-commits

commit:     471be79f45484e8f2f1fe7b7e769ad7f8e414659
Author:     WANG Xuerui <git <AT> xen0n <DOT> name>
AuthorDate: Tue Jan 18 06:52:51 2022 +0000
Commit:     Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Tue Jan 18 07:58:40 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=471be79f

sys-fs/erofs-utils: fix build on ppc64le

Tested with a fresh ppc64le chroot and qemu.

Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: WANG Xuerui <git <AT> xen0n.name>
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>

 sys-fs/erofs-utils/erofs-utils-1.4.ebuild          |   4 +
 .../files/1.4-dump-fix-de-nid-issues.patch         | 134 +++++++++++++++++++++
 2 files changed, 138 insertions(+)

diff --git a/sys-fs/erofs-utils/erofs-utils-1.4.ebuild b/sys-fs/erofs-utils/erofs-utils-1.4.ebuild
index 1682bcdfb6d0..be9b257859bf 100644
--- a/sys-fs/erofs-utils/erofs-utils-1.4.ebuild
+++ b/sys-fs/erofs-utils/erofs-utils-1.4.ebuild
@@ -24,6 +24,10 @@ RDEPEND="
 DEPEND="${RDEPEND}"
 BDEPEND="virtual/pkgconfig"
 
+PATCHES=(
+	"${FILESDIR}/${PV}-dump-fix-de-nid-issues.patch"
+)
+
 src_prepare() {
 	default
 	eautoreconf

diff --git a/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch b/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch
new file mode 100644
index 000000000000..4c833d737fa2
--- /dev/null
+++ b/sys-fs/erofs-utils/files/1.4-dump-fix-de-nid-issues.patch
@@ -0,0 +1,134 @@
+From 35b15cc9c75cc2d7782f36433bad90326e9cb060 Mon Sep 17 00:00:00 2001
+From: Gao Xiang <xiang@kernel.org>
+Date: Mon, 22 Nov 2021 07:48:48 +0800
+Subject: [PATCH 1/2] erofs-utils: dump: fix de->nid issues
+
+As David Michael reported, "
+    In file included from main.c:11:
+    main.c: In function 'erofs_checkdirent':
+    ../include/erofs/print.h:68:25: error: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type '__le64' {aka 'long unsigned int'} [-Werror=format=]
+       68 |                         "<E> " PR_FMT_FUNC_LINE(fmt),   \
+          |                         ^~~~~~
+    main.c:264:17: note: in expansion of macro 'erofs_err'
+      264 |                 erofs_err("invalid file type %llu", de->nid);
+          |                 ^~~~~~~~~
+    main.c: In function 'erofs_read_dirent':
+    ../include/erofs/print.h:68:25: error: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type '__le64' {aka 'long unsigned int'} [-Werror=format=]
+       68 |                         "<E> " PR_FMT_FUNC_LINE(fmt),   \
+          |                         ^~~~~~
+    main.c:303:25: note: in expansion of macro 'erofs_err'
+      303 |                         erofs_err("parse dir nid %llu error occurred\n",
+          |                         ^~~~~~~~~
+    cc1: all warnings being treated as errors
+"
+
+Also there are many de->nid lacking of endianness handling.
+Should fix them together.
+
+Link: https://lore.kernel.org/r/20211121234848.12663-1-xiang@kernel.org
+Fixes: cf8be8a4352a ("erofs-utils: dump: add feature for collecting filesystem statistics")
+Cc: Wang Qi <mpiglet@outlook.com>
+Cc: Guo Xuenan <guoxuenan@huawei.com>
+Reported-by: David Michael <fedora.dm0@gmail.com>
+Signed-off-by: Gao Xiang <xiang@kernel.org>
+---
+ dump/main.c | 31 ++++++++++++++++---------------
+ 1 file changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/dump/main.c b/dump/main.c
+index b7560ec..f85903b 100644
+--- a/dump/main.c
++++ b/dump/main.c
+@@ -242,11 +242,12 @@ static inline int erofs_checkdirent(struct erofs_dirent *de,
+ {
+ 	int dname_len;
+ 	unsigned int nameoff = le16_to_cpu(de->nameoff);
++	erofs_nid_t nid = le64_to_cpu(de->nid);
+ 
+ 	if (nameoff < sizeof(struct erofs_dirent) ||
+ 			nameoff >= PAGE_SIZE) {
+ 		erofs_err("invalid de[0].nameoff %u @ nid %llu",
+-				nameoff, de->nid | 0ULL);
++				nameoff, nid | 0ULL);
+ 		return -EFSCORRUPTED;
+ 	}
+ 
+@@ -255,13 +256,12 @@ static inline int erofs_checkdirent(struct erofs_dirent *de,
+ 	/* a corrupted entry is found */
+ 	if (nameoff + dname_len > maxsize ||
+ 			dname_len > EROFS_NAME_LEN) {
+-		erofs_err("bogus dirent @ nid %llu",
+-				le64_to_cpu(de->nid) | 0ULL);
++		erofs_err("bogus dirent @ nid %llu", nid | 0ULL);
+ 		DBG_BUGON(1);
+ 		return -EFSCORRUPTED;
+ 	}
+ 	if (de->file_type >= EROFS_FT_MAX) {
+-		erofs_err("invalid file type %llu", de->nid);
++		erofs_err("invalid file type %llu", nid | 0ULL);
+ 		return -EFSCORRUPTED;
+ 	}
+ 	return dname_len;
+@@ -273,7 +273,7 @@ static int erofs_read_dirent(struct erofs_dirent *de,
+ {
+ 	int err;
+ 	erofs_off_t occupied_size = 0;
+-	struct erofs_inode inode = { .nid = de->nid };
++	struct erofs_inode inode = { .nid = le64_to_cpu(de->nid) };
+ 
+ 	stats.files++;
+ 	stats.file_category_stat[de->file_type]++;
+@@ -296,12 +296,12 @@ static int erofs_read_dirent(struct erofs_dirent *de,
+ 		update_file_size_statatics(occupied_size, inode.i_size);
+ 	}
+ 
+-	if ((de->file_type == EROFS_FT_DIR)
+-			&& de->nid != nid && de->nid != parent_nid) {
+-		err = erofs_read_dir(de->nid, nid);
++	if (de->file_type == EROFS_FT_DIR && inode.nid != nid &&
++	    inode.nid != parent_nid) {
++		err = erofs_read_dir(inode.nid, nid);
+ 		if (err) {
+ 			erofs_err("parse dir nid %llu error occurred\n",
+-					de->nid);
++				  inode.nid | 0ULL);
+ 			return err;
+ 		}
+ 	}
+@@ -338,7 +338,8 @@ static int erofs_read_dir(erofs_nid_t nid, erofs_nid_t parent_nid)
+ 			int ret;
+ 
+ 			/* skip "." and ".." dentry */
+-			if (de->nid == nid || de->nid == parent_nid) {
++			if (le64_to_cpu(de->nid) == nid ||
++			    le64_to_cpu(de->nid) == parent_nid) {
+ 				de++;
+ 				continue;
+ 			}
+@@ -399,18 +400,18 @@ static int erofs_get_pathname(erofs_nid_t nid, erofs_nid_t parent_nid,
+ 			if (len < 0)
+ 				return len;
+ 
+-			if (de->nid == target) {
++			if (le64_to_cpu(de->nid) == target) {
+ 				memcpy(path + pos, dname, len);
+ 				path[pos + len] = '\0';
+ 				return 0;
+ 			}
+ 
+ 			if (de->file_type == EROFS_FT_DIR &&
+-					de->nid != parent_nid &&
+-					de->nid != nid) {
++			    le64_to_cpu(de->nid) != parent_nid &&
++			    le64_to_cpu(de->nid) != nid) {
+ 				memcpy(path + pos, dname, len);
+-				err = erofs_get_pathname(de->nid, nid,
+-						target, path, pos + len);
++				err = erofs_get_pathname(le64_to_cpu(de->nid),
++						nid, target, path, pos + len);
+ 				if (!err)
+ 					return 0;
+ 				memset(path + pos, 0, len);
+-- 
+2.34.1
+


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: sys-fs/erofs-utils/files/, sys-fs/erofs-utils/
@ 2022-01-18  7:58 Florian Schmaus
  0 siblings, 0 replies; 2+ messages in thread
From: Florian Schmaus @ 2022-01-18  7:58 UTC (permalink / raw
  To: gentoo-commits

commit:     8bb15cf3b80f086cf3b4a9133e47abe9d60d6624
Author:     WANG Xuerui <git <AT> xen0n <DOT> name>
AuthorDate: Tue Jan 18 06:54:33 2022 +0000
Commit:     Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Tue Jan 18 07:58:41 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8bb15cf3

sys-fs/erofs-utils: fix build on musl

Closes: https://bugs.gentoo.org/831015
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: WANG Xuerui <git <AT> xen0n.name>
Closes: https://github.com/gentoo/gentoo/pull/23850
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>

 sys-fs/erofs-utils/erofs-utils-1.4.ebuild          |  1 +
 .../files/1.4-fsck-add-missing-include.patch       | 31 ++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/sys-fs/erofs-utils/erofs-utils-1.4.ebuild b/sys-fs/erofs-utils/erofs-utils-1.4.ebuild
index be9b257859bf..158c90277a0b 100644
--- a/sys-fs/erofs-utils/erofs-utils-1.4.ebuild
+++ b/sys-fs/erofs-utils/erofs-utils-1.4.ebuild
@@ -26,6 +26,7 @@ BDEPEND="virtual/pkgconfig"
 
 PATCHES=(
 	"${FILESDIR}/${PV}-dump-fix-de-nid-issues.patch"
+	"${FILESDIR}/${PV}-fsck-add-missing-include.patch"
 )
 
 src_prepare() {

diff --git a/sys-fs/erofs-utils/files/1.4-fsck-add-missing-include.patch b/sys-fs/erofs-utils/files/1.4-fsck-add-missing-include.patch
new file mode 100644
index 000000000000..8e4f6ac3d336
--- /dev/null
+++ b/sys-fs/erofs-utils/files/1.4-fsck-add-missing-include.patch
@@ -0,0 +1,31 @@
+From 2ac662b01de904802da4e84d0738e47bf573efde Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 6 Dec 2021 20:14:03 +0100
+Subject: [PATCH 2/2] fsck/main.c: add missing include
+
+Otherwise musl C library builds fail with missing S_IFMT/S_IFDIR
+definitions.
+
+Link: https://lore.kernel.org/r/20211206191403.1435229-1-alex@linutronix.de
+Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
+---
+ fsck/main.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/fsck/main.c b/fsck/main.c
+index aefa881..ad48e35 100644
+--- a/fsck/main.c
++++ b/fsck/main.c
+@@ -6,6 +6,7 @@
+ #include <stdlib.h>
+ #include <getopt.h>
+ #include <time.h>
++#include <sys/stat.h>
+ #include "erofs/print.h"
+ #include "erofs/io.h"
+ #include "erofs/decompress.h"
+-- 
+2.34.1
+


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-18  7:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-18  7:58 [gentoo-commits] repo/gentoo:master commit in: sys-fs/erofs-utils/files/, sys-fs/erofs-utils/ Florian Schmaus
  -- strict thread matches above, loose matches on Subject: below --
2022-01-18  7:58 Florian Schmaus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox