On Wed, 7 May 2025 21:25:48 +0800 Gao Xiang <hsiang...@linux.alibaba.com> wrote:
> 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. Ok with me. > > I add "_FILE_OFFSET_BITS 64" in the top since "contrib/stress.c" > can be compiled individually. This looks correct. Thank you! > 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; > }