because musl use readdir, pread and lseek instead of readdir64,
pread64 and lseek64.

Reported-by: Milan P. Stanić <m...@arvanta.net>
Thanks-to: Natanael Copa <nc...@alpinelinux.org>
Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com>
---
(Fix wrong email address typo..)

Hi,

Due to the original patch lacks of the commit message and
SOB, so I revised myself.

I add "_FILE_OFFSET_BITS 64" in the top since "contrib/stress.c"
can be compiled individually.

Feel free to repost a formal patch if inappropriate.

Thanks,
Gao Xiang

 contrib/stress.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/contrib/stress.c b/contrib/stress.c
index d8def6a..0ef8c67 100644
--- a/contrib/stress.c
+++ b/contrib/stress.c
@@ -4,6 +4,7 @@
  *
  * Copyright (C) 2019-2025 Gao Xiang <xi...@kernel.org>
  */
+#define _FILE_OFFSET_BITS 64
 #define _GNU_SOURCE
 #include "erofs/defs.h"
 #include <errno.h>
@@ -271,7 +272,7 @@ static int __getdents_f(unsigned int sn, struct fent *fe)
        }
 
        dir = fdopendir(dfd);
-       while (readdir64(dir) != NULL)
+       while (readdir(dir) != NULL)
                continue;
        closedir(dir);
        return 0;
@@ -428,7 +429,7 @@ static int __read_f(unsigned int sn, struct fent *fe, 
uint64_t filesize)
 
        printf("%d[%u]/%u read_f: %llu bytes @ %llu of %s\n", getpid(), procid,
               sn, len | 0ULL, off | 0ULL, fe->subpath);
-       nread = pread64(fe->fd, buf, len, off);
+       nread = pread(fe->fd, buf, len, off);
        if (nread != trimmed) {
                fprintf(stderr, "%d[%u]/%u read_f: failed to read %llu bytes @ 
%llu of %s\n",
                        getpid(), procid, sn, len | 0ULL, off | 0ULL,
@@ -439,7 +440,7 @@ static int __read_f(unsigned int sn, struct fent *fe, 
uint64_t filesize)
        if (fe->chkfd < 0)
                return 0;
 
-       nread2 = pread64(fe->chkfd, chkbuf, len, off);
+       nread2 = pread(fe->chkfd, chkbuf, len, off);
        if (nread2 <= 0) {
                fprintf(stderr, "%d[%u]/%u read_f: failed to check %llu bytes @ 
%llu of %s\n",
                        getpid(), procid, sn, len | 0ULL, off | 0ULL,
@@ -477,14 +478,14 @@ static int read_f(int op, unsigned int sn)
        if (ret)
                return ret;
 
-       fsz = lseek64(fe->fd, 0, SEEK_END);
+       fsz = lseek(fe->fd, 0, SEEK_END);
        if (fsz <= 0) {
                if (!fsz) {
                        printf("%d[%u]/%u %s: zero size @ %s\n",
                               getpid(), procid, sn, __func__, fe->subpath);
                        return 0;
                }
-               fprintf(stderr, "%d[%u]/%u %s: lseek64 %s failed %d\n",
+               fprintf(stderr, "%d[%u]/%u %s: lseek %s failed %d\n",
                        getpid(), procid, sn, __func__, fe->subpath, errno);
                return -errno;
        }
@@ -504,7 +505,7 @@ static int __doscan_f(unsigned int sn, const char *op, 
struct fent *fe,
        for (pos = 0; pos < filesize; pos += chunksize) {
                ssize_t nread, nread2;
 
-               nread = pread64(fe->fd, buf, chunksize, pos);
+               nread = pread(fe->fd, buf, chunksize, pos);
 
                if (nread <= 0)
                        return -errno;
@@ -515,7 +516,7 @@ static int __doscan_f(unsigned int sn, const char *op, 
struct fent *fe,
                if (fe->chkfd < 0)
                        continue;
 
-               nread2 = pread64(fe->chkfd, chkbuf, chunksize, pos);
+               nread2 = pread(fe->chkfd, chkbuf, chunksize, pos);
                if (nread2 <= 0)
                        return -errno;
 
@@ -547,14 +548,14 @@ static int doscan_f(int op, unsigned int sn)
        if (ret)
                return ret;
 
-       fsz = lseek64(fe->fd, 0, SEEK_END);
+       fsz = lseek(fe->fd, 0, SEEK_END);
        if (fsz <= 0) {
                if (!fsz) {
                        printf("%d[%u]/%u %s: zero size @ %s\n",
                               getpid(), procid, sn, __func__, fe->subpath);
                        return 0;
                }
-               fprintf(stderr, "%d[%u]/%u %s: lseek64 %s failed %d\n",
+               fprintf(stderr, "%d[%u]/%u %s: lseek %s failed %d\n",
                        getpid(), procid, sn, __func__, fe->subpath, errno);
                return -errno;
        }
@@ -576,7 +577,7 @@ static int doscan_aligned_f(int op, unsigned int sn)
        ret = tryopen(sn, __func__, fe);
        if (ret)
                return ret;
-       fsz = lseek64(fe->fd, 0, SEEK_END);
+       fsz = lseek(fe->fd, 0, SEEK_END);
        if (fsz <= psz) {
                if (fsz >= 0) {
                        printf("%d[%u]/%u %s: size too small %lld @ %s\n",
@@ -584,7 +585,7 @@ static int doscan_aligned_f(int op, unsigned int sn)
                               fe->subpath);
                        return 0;
                }
-               fprintf(stderr, "%d[%u]/%u %s: lseek64 %s failed %d\n",
+               fprintf(stderr, "%d[%u]/%u %s: lseek %s failed %d\n",
                        getpid(), procid, sn, __func__, fe->subpath, errno);
                return -errno;
        }
-- 
2.43.5


Reply via email to