All of lore.kernel.org
 help / color / mirror / Atom feed
From: Khem Raj <raj.khem@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: Khem Raj <raj.khem@gmail.com>
Subject: [PATCH 01/11] erofs-utils: Convert from off64_t to off_t
Date: Thu, 15 Dec 2022 00:45:36 -0800	[thread overview]
Message-ID: <20221215084546.125368-1-raj.khem@gmail.com> (raw)

Ensure largefile macros are used to determine size of off_t and not the
explict 64bit version of functions and types

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 .../0001-configure-use-AC_SYS_LARGEFILE.patch |  43 +++++++
 ...eplace-l-stat64-by-equivalent-l-stat.patch | 109 ++++++++++++++++++
 ...-Make-LFS-mandatory-for-all-usecases.patch |  41 +++++++
 .../erofs-utils/erofs-utils_1.5.bb            |   8 +-
 4 files changed, 199 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/erofs-utils/erofs-utils/0001-configure-use-AC_SYS_LARGEFILE.patch
 create mode 100644 meta/recipes-devtools/erofs-utils/erofs-utils/0002-erofs-replace-l-stat64-by-equivalent-l-stat.patch
 create mode 100644 meta/recipes-devtools/erofs-utils/erofs-utils/0003-internal.h-Make-LFS-mandatory-for-all-usecases.patch

diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils/0001-configure-use-AC_SYS_LARGEFILE.patch b/meta/recipes-devtools/erofs-utils/erofs-utils/0001-configure-use-AC_SYS_LARGEFILE.patch
new file mode 100644
index 0000000000..75c91f51a7
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils/0001-configure-use-AC_SYS_LARGEFILE.patch
@@ -0,0 +1,43 @@
+From fef3b16dba2c5f6ad88951b80cdfbedd423e80a0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 7 Dec 2022 20:16:52 -0800
+Subject: [PATCH v3 1/3] configure: use AC_SYS_LARGEFILE
+
+The autoconf macro AC_SYS_LARGEFILE defines _FILE_OFFSET_BITS=64
+where necessary to ensure that off_t and all interfaces using off_t
+are 64bit, even on 32bit systems.
+
+Pass -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=66 via CFLAGS
+
+Upstream-Status: Submitted [https://lore.kernel.org/linux-erofs/20221215064758.93821-1-raj.khem@gmail.com/T/#t]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index a736ff0..e8bb003 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -13,6 +13,8 @@ AC_CONFIG_MACRO_DIR([m4])
+ AC_CONFIG_AUX_DIR(config)
+ AM_INIT_AUTOMAKE([foreign -Wall])
+ 
++AC_SYS_LARGEFILE
++
+ # Checks for programs.
+ AM_PROG_AR
+ AC_PROG_CC
+@@ -319,6 +321,9 @@ if test "x$enable_lzma" = "xyes"; then
+   CPPFLAGS="${saved_CPPFLAGS}"
+ fi
+ 
++# Enable 64-bit off_t
++CFLAGS+=" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
++
+ # Set up needed symbols, conditionals and compiler/linker flags
+ AM_CONDITIONAL([ENABLE_LZ4], [test "x${have_lz4}" = "xyes"])
+ AM_CONDITIONAL([ENABLE_LZ4HC], [test "x${have_lz4hc}" = "xyes"])
+-- 
+2.39.0
+
diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils/0002-erofs-replace-l-stat64-by-equivalent-l-stat.patch b/meta/recipes-devtools/erofs-utils/erofs-utils/0002-erofs-replace-l-stat64-by-equivalent-l-stat.patch
new file mode 100644
index 0000000000..d12bebbf87
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils/0002-erofs-replace-l-stat64-by-equivalent-l-stat.patch
@@ -0,0 +1,109 @@
+From 856189c324834b838f0e9cfc0d2e05f12518f264 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 7 Dec 2022 22:17:35 -0800
+Subject: [PATCH v3 2/3] erofs: replace [l]stat64 by equivalent [l]stat
+
+Upstream-Status: Submitted [https://lore.kernel.org/linux-erofs/20221215064758.93821-2-raj.khem@gmail.com/T/#u]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/inode.c | 10 +++++-----
+ lib/xattr.c |  4 ++--
+ mkfs/main.c |  4 ++--
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/lib/inode.c b/lib/inode.c
+index f192510..38003fc 100644
+--- a/lib/inode.c
++++ b/lib/inode.c
+@@ -773,7 +773,7 @@ static u32 erofs_new_encode_dev(dev_t dev)
+ 
+ #ifdef WITH_ANDROID
+ int erofs_droid_inode_fsconfig(struct erofs_inode *inode,
+-			       struct stat64 *st,
++			       struct stat *st,
+ 			       const char *path)
+ {
+ 	/* filesystem_config does not preserve file type bits */
+@@ -818,7 +818,7 @@ int erofs_droid_inode_fsconfig(struct erofs_inode *inode,
+ }
+ #else
+ static int erofs_droid_inode_fsconfig(struct erofs_inode *inode,
+-				      struct stat64 *st,
++				      struct stat *st,
+ 				      const char *path)
+ {
+ 	return 0;
+@@ -826,7 +826,7 @@ static int erofs_droid_inode_fsconfig(struct erofs_inode *inode,
+ #endif
+ 
+ static int erofs_fill_inode(struct erofs_inode *inode,
+-			    struct stat64 *st,
++			    struct stat *st,
+ 			    const char *path)
+ {
+ 	int err = erofs_droid_inode_fsconfig(inode, st, path);
+@@ -910,7 +910,7 @@ static struct erofs_inode *erofs_new_inode(void)
+ /* get the inode from the (source) path */
+ static struct erofs_inode *erofs_iget_from_path(const char *path, bool is_src)
+ {
+-	struct stat64 st;
++	struct stat st;
+ 	struct erofs_inode *inode;
+ 	int ret;
+ 
+@@ -918,7 +918,7 @@ static struct erofs_inode *erofs_iget_from_path(const char *path, bool is_src)
+ 	if (!is_src)
+ 		return ERR_PTR(-EINVAL);
+ 
+-	ret = lstat64(path, &st);
++	ret = lstat(path, &st);
+ 	if (ret)
+ 		return ERR_PTR(-errno);
+ 
+diff --git a/lib/xattr.c b/lib/xattr.c
+index 71ffe3e..fd0e728 100644
+--- a/lib/xattr.c
++++ b/lib/xattr.c
+@@ -467,7 +467,7 @@ static int erofs_count_all_xattrs_from_path(const char *path)
+ {
+ 	int ret;
+ 	DIR *_dir;
+-	struct stat64 st;
++	struct stat st;
+ 
+ 	_dir = opendir(path);
+ 	if (!_dir) {
+@@ -502,7 +502,7 @@ static int erofs_count_all_xattrs_from_path(const char *path)
+ 			goto fail;
+ 		}
+ 
+-		ret = lstat64(buf, &st);
++		ret = lstat(buf, &st);
+ 		if (ret) {
+ 			ret = -errno;
+ 			goto fail;
+diff --git a/mkfs/main.c b/mkfs/main.c
+index d2c9830..5279805 100644
+--- a/mkfs/main.c
++++ b/mkfs/main.c
+@@ -581,7 +581,7 @@ int main(int argc, char **argv)
+ 	struct erofs_buffer_head *sb_bh;
+ 	struct erofs_inode *root_inode;
+ 	erofs_nid_t root_nid;
+-	struct stat64 st;
++	struct stat st;
+ 	erofs_blk_t nblocks;
+ 	struct timeval t;
+ 	char uuid_str[37] = "not available";
+@@ -609,7 +609,7 @@ int main(int argc, char **argv)
+ 			return 1;
+ 	}
+ 
+-	err = lstat64(cfg.c_src_path, &st);
++	err = lstat(cfg.c_src_path, &st);
+ 	if (err)
+ 		return 1;
+ 	if (!S_ISDIR(st.st_mode)) {
+-- 
+2.39.0
+
diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils/0003-internal.h-Make-LFS-mandatory-for-all-usecases.patch b/meta/recipes-devtools/erofs-utils/erofs-utils/0003-internal.h-Make-LFS-mandatory-for-all-usecases.patch
new file mode 100644
index 0000000000..97faa5d673
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils/0003-internal.h-Make-LFS-mandatory-for-all-usecases.patch
@@ -0,0 +1,41 @@
+From 8f8cbc7b773da63bce8226249784ba6824635c9c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 7 Dec 2022 20:19:27 -0800
+Subject: [PATCH v3 3/3] internal.h: Make LFS mandatory for all usecases
+
+erosfs depend on the consistent use of a 64bit offset
+type, force downstreams to use transparent LFS (_FILE_OFFSET_BITS=64),
+so that it becomes impossible for them to use 32bit interfaces.
+
+Upstream-Status: Submitted [https://lore.kernel.org/linux-erofs/20221215064758.93821-3-raj.khem@gmail.com/T/#u]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ include/erofs/internal.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/include/erofs/internal.h b/include/erofs/internal.h
+index 6a70f11..d3b2986 100644
+--- a/include/erofs/internal.h
++++ b/include/erofs/internal.h
+@@ -21,6 +21,7 @@ typedef unsigned short umode_t;
+ 
+ #include "erofs_fs.h"
+ #include <fcntl.h>
++#include <sys/types.h> /* for off_t definition */
+ 
+ #ifndef PATH_MAX
+ #define PATH_MAX        4096    /* # chars in a path name including nul */
+@@ -104,6 +105,10 @@ struct erofs_sb_info {
+ 	};
+ };
+ 
++
++/* make sure that any user of the erofs headers has atleast 64bit off_t type */
++extern int erofs_assert_largefile[sizeof(off_t)-8];
++
+ /* global sbi */
+ extern struct erofs_sb_info sbi;
+ 
+-- 
+2.39.0
+
diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils_1.5.bb b/meta/recipes-devtools/erofs-utils/erofs-utils_1.5.bb
index b9a97b3e53..6ce5843570 100644
--- a/meta/recipes-devtools/erofs-utils/erofs-utils_1.5.bb
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils_1.5.bb
@@ -6,7 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=73001d804ea1e3d84365f652242cca20"
 HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README"
 
 SRCREV = "a2821a66b42aee5430bccee82c280e38d1e9ab29"
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git;branch=master"
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git;branch=master \
+           file://0001-configure-use-AC_SYS_LARGEFILE.patch \
+           file://0002-erofs-replace-l-stat64-by-equivalent-l-stat.patch \
+           file://0003-internal.h-Make-LFS-mandatory-for-all-usecases.patch \
+           "
 
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))"
 
@@ -19,7 +23,7 @@ inherit pkgconfig autotools
 PACKAGECONFIG ??= "lz4"
 PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
 
-EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse"
+EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse --enable-largefile"
 
 CFLAGS:append:powerpc64le = " -D__SANE_USERSPACE_TYPES__"
 
-- 
2.39.0



             reply	other threads:[~2022-12-15  8:45 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-15  8:45 Khem Raj [this message]
2022-12-15  8:45 ` [PATCH 02/11] pseudo: Remove 64bit time_t flags Khem Raj
2022-12-15  8:45 ` [PATCH 03/11] unfs3: Define off64_t in terms of off_t on musl Khem Raj
2022-12-15  8:45 ` [PATCH 04/11] acpid: Fix largefile enabled build Khem Raj
2022-12-15  8:45 ` [PATCH 05/11] efivar: Replace off64_t with off_t Khem Raj
2022-12-15  8:45 ` [PATCH 06/11] ltp: Fix largefile support Khem Raj
2022-12-15  8:45 ` [PATCH 07/11] acl: Enable largefile support by default Khem Raj
2022-12-15  8:45 ` [PATCH 08/11] e2fsprogs: Do not use 64bit functions for largefile support Khem Raj
2022-12-15  9:14   ` [OE-core] " Alexander Kanavin
2022-12-15  8:45 ` [PATCH 09/11] libpciaccess: " Khem Raj
2022-12-15  8:45 ` [PATCH 10/11] mdadm: Use _FILE_OFFSET_BITS to use " Khem Raj
2022-12-15  8:45 ` [PATCH 11/11] btrfs-tools: Do not use 64bit functions for " Khem Raj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221215084546.125368-1-raj.khem@gmail.com \
    --to=raj.khem@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.