On Wed, 2025-05-07 at 18:35, Natanael Copa wrote: > 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.
Also 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; > > } >