On Sun, Nov 05, 2023 at 06:39:32PM +0000, Sam James wrote: > From: Violet Purcell <vimproved@xxxxxxxxxxxxx> > > LFS64 interfaces are non-standard and are being removed in the upcoming musl > 1.2.5. Setting _FILE_OFFSET_BITS=64 (which is currently being done) makes all > interfaces on glibc 64-bit by default, so using the LFS64 interfaces is > redundant. This commit replaces all occurences of off64_t with off_t, > stat64 with stat, and fstat64 with fstat. > > Bug: https://bugs.gentoo.org/907039 > Signed-off-by: Violet Purcell <vimproved@xxxxxxxxxxxxx> > Signed-off-by: Sam James <sam@xxxxxxxxxx> This mostly looks ok, with one caveat: Should we be adding to the codebase a build sanity check such as: BUILD_BUG_ON(sizeof(off_t) < 8); To make sure that -D_FILE_OFFSET_BITS=64 actually does what we think it does? Also, should we start setting -D_TIME_BITS=64 to handle Y2038 problems on 32-bit systems? --D > --- > copy/xfs_copy.c | 2 +- > fsr/xfs_fsr.c | 2 +- > io/bmap.c | 6 +++--- > io/copy_file_range.c | 4 ++-- > io/cowextsize.c | 6 +++--- > io/fadvise.c | 2 +- > io/fiemap.c | 6 +++--- > io/fsmap.c | 6 +++--- > io/io.h | 10 +++++----- > io/madvise.c | 2 +- > io/mincore.c | 2 +- > io/mmap.c | 13 +++++++------ > io/pread.c | 22 +++++++++++----------- > io/pwrite.c | 20 ++++++++++---------- > io/reflink.c | 4 ++-- > io/seek.c | 6 +++--- > io/sendfile.c | 6 +++--- > io/stat.c | 2 +- > io/sync_file_range.c | 2 +- > io/truncate.c | 2 +- > libxfs/rdwr.c | 8 ++++---- > mdrestore/xfs_mdrestore.c | 2 +- > repair/prefetch.c | 2 +- > scrub/spacemap.c | 6 +++--- > spaceman/freesp.c | 4 ++-- > spaceman/trim.c | 2 +- > 26 files changed, 75 insertions(+), 74 deletions(-) > > diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c > index 79f65946..854fd7f4 100644 > --- a/copy/xfs_copy.c > +++ b/copy/xfs_copy.c > @@ -888,7 +888,7 @@ main(int argc, char **argv) > } > } else { > char *lb[XFS_MAX_SECTORSIZE] = { NULL }; > - off64_t off; > + off_t off; > > /* ensure device files are sufficiently large */ > > diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c > index ba02506d..12fffbd8 100644 > --- a/fsr/xfs_fsr.c > +++ b/fsr/xfs_fsr.c > @@ -1148,7 +1148,7 @@ packfile(char *fname, char *tname, int fd, > struct dioattr dio; > static xfs_swapext_t sx; > struct xfs_flock64 space; > - off64_t cnt, pos; > + off_t cnt, pos; > void *fbuf = NULL; > int ct, wc, wc_b4; > char ffname[SMBUFSZ]; > diff --git a/io/bmap.c b/io/bmap.c > index 722a389b..6182e1c5 100644 > --- a/io/bmap.c > +++ b/io/bmap.c > @@ -257,7 +257,7 @@ bmap_f( > #define FLG_BSW 0000010 /* Not on begin of stripe width */ > #define FLG_ESW 0000001 /* Not on end of stripe width */ > int agno; > - off64_t agoff, bbperag; > + off_t agoff, bbperag; > int foff_w, boff_w, aoff_w, tot_w, agno_w; > char rbuf[32], bbuf[32], abuf[32]; > int sunit, swidth; > @@ -267,8 +267,8 @@ bmap_f( > if (is_rt) > sunit = swidth = bbperag = 0; > else { > - bbperag = (off64_t)fsgeo.agblocks * > - (off64_t)fsgeo.blocksize / BBSIZE; > + bbperag = (off_t)fsgeo.agblocks * > + (off_t)fsgeo.blocksize / BBSIZE; > sunit = (fsgeo.sunit * fsgeo.blocksize) / BBSIZE; > swidth = (fsgeo.swidth * fsgeo.blocksize) / BBSIZE; > } > diff --git a/io/copy_file_range.c b/io/copy_file_range.c > index d154fa76..422e691a 100644 > --- a/io/copy_file_range.c > +++ b/io/copy_file_range.c > @@ -54,7 +54,7 @@ copy_file_range_cmd(int fd, long long *src_off, long long *dst_off, size_t len) > return 0; > } > > -static off64_t > +static off_t > copy_src_filesize(int fd) > { > struct stat st; > @@ -154,7 +154,7 @@ copy_range_f(int argc, char **argv) > } > > if (!len_specified) { > - off64_t sz; > + off_t sz; > > sz = copy_src_filesize(fd); > if (sz < 0 || (unsigned long long)sz > SIZE_MAX) { > diff --git a/io/cowextsize.c b/io/cowextsize.c > index f6b134df..00e40c6f 100644 > --- a/io/cowextsize.c > +++ b/io/cowextsize.c > @@ -50,10 +50,10 @@ static int > set_cowextsize(const char *path, int fd, long extsz) > { > struct fsxattr fsx; > - struct stat64 stat; > + struct stat stat; > > - if (fstat64(fd, &stat) < 0) { > - perror("fstat64"); > + if (fstat(fd, &stat) < 0) { > + perror("fstat"); > exitcode = 1; > return 0; > } > diff --git a/io/fadvise.c b/io/fadvise.c > index 60cc0f08..0966c41b 100644 > --- a/io/fadvise.c > +++ b/io/fadvise.c > @@ -39,7 +39,7 @@ fadvise_f( > int argc, > char **argv) > { > - off64_t offset = 0, length = 0; > + off_t offset = 0, length = 0; > int c, range = 0, advise = POSIX_FADV_NORMAL; > > while ((c = getopt(argc, argv, "dnrsw")) != EOF) { > diff --git a/io/fiemap.c b/io/fiemap.c > index f0c74dfe..b41f71bf 100644 > --- a/io/fiemap.c > +++ b/io/fiemap.c > @@ -234,9 +234,9 @@ fiemap_f( > int tot_w = 5; /* 5 since its just one number */ > int flg_w = 5; > __u64 last_logical = 0; /* last extent offset handled */ > - off64_t start_offset = 0; /* mapping start */ > - off64_t length = -1LL; /* mapping length */ > - off64_t range_end = -1LL; /* mapping end*/ > + off_t start_offset = 0; /* mapping start */ > + off_t length = -1LL; /* mapping length */ > + off_t range_end = -1LL; /* mapping end*/ > size_t fsblocksize, fssectsize; > struct stat st; > > diff --git a/io/fsmap.c b/io/fsmap.c > index 7db51847..bf119639 100644 > --- a/io/fsmap.c > +++ b/io/fsmap.c > @@ -170,7 +170,7 @@ dump_map_verbose( > unsigned long long i; > struct fsmap *p; > int agno; > - off64_t agoff, bperag; > + off_t agoff, bperag; > int foff_w, boff_w, aoff_w, tot_w, agno_w, own_w; > int nr_w, dev_w; > char rbuf[40], bbuf[40], abuf[40], obuf[40]; > @@ -183,8 +183,8 @@ dump_map_verbose( > dev_w = 3; > nr_w = 4; > tot_w = MINTOT_WIDTH; > - bperag = (off64_t)fsgeo->agblocks * > - (off64_t)fsgeo->blocksize; > + bperag = (off_t)fsgeo->agblocks * > + (off_t)fsgeo->blocksize; > sunit = (fsgeo->sunit * fsgeo->blocksize); > swidth = (fsgeo->swidth * fsgeo->blocksize); > > diff --git a/io/io.h b/io/io.h > index fe474faf..68e5e487 100644 > --- a/io/io.h > +++ b/io/io.h > @@ -53,7 +53,7 @@ extern int stat_f(int argc, char **argv); > typedef struct mmap_region { > void *addr; /* address of start of mapping */ > size_t length; /* length of mapping */ > - off64_t offset; /* start offset into backing file */ > + off_t offset; /* start offset into backing file */ > int prot; /* protection mode of the mapping */ > int flags; /* MAP_* flags passed to mmap() */ > char *name; /* name of backing file */ > @@ -63,13 +63,13 @@ extern mmap_region_t *maptable; /* mmap'd region array */ > extern int mapcount; /* #entries in the mapping table */ > extern mmap_region_t *mapping; /* active mapping table entry */ > extern int maplist_f(void); > -extern void *check_mapping_range(mmap_region_t *, off64_t, size_t, int); > +extern void *check_mapping_range(mmap_region_t *, off_t, size_t, int); > > /* > * Various xfs_io helper routines/globals > */ > > -extern off64_t filesize(void); > +extern off_t filesize(void); > extern int openfile(char *, struct xfs_fsop_geom *, int, mode_t, > struct fs_path *); > extern int addfile(char *, int , struct xfs_fsop_geom *, int, > @@ -84,9 +84,9 @@ extern size_t io_buffersize; > extern int vectors; > extern struct iovec *iov; > extern int alloc_buffer(size_t, int, unsigned int); > -extern int read_buffer(int, off64_t, long long, long long *, > +extern int read_buffer(int, off_t, long long, long long *, > int, int); > -extern void dump_buffer(off64_t, ssize_t); > +extern void dump_buffer(off_t, ssize_t); > > extern void attr_init(void); > extern void bmap_init(void); > diff --git a/io/madvise.c b/io/madvise.c > index bde31539..6e9c5b12 100644 > --- a/io/madvise.c > +++ b/io/madvise.c > @@ -39,7 +39,7 @@ madvise_f( > int argc, > char **argv) > { > - off64_t offset, llength; > + off_t offset, llength; > size_t length; > void *start; > int advise = MADV_NORMAL, c; > diff --git a/io/mincore.c b/io/mincore.c > index 67f1d6c4..24147ac2 100644 > --- a/io/mincore.c > +++ b/io/mincore.c > @@ -17,7 +17,7 @@ mincore_f( > int argc, > char **argv) > { > - off64_t offset, llength; > + off_t offset, llength; > size_t length; > size_t blocksize, sectsize; > void *start; > diff --git a/io/mmap.c b/io/mmap.c > index 425957d4..7161ae8e 100644 > --- a/io/mmap.c > +++ b/io/mmap.c > @@ -63,11 +63,11 @@ print_mapping( > void * > check_mapping_range( > mmap_region_t *map, > - off64_t offset, > + off_t offset, > size_t length, > int pagealign) > { > - off64_t relative; > + off_t relative; > > if (offset < mapping->offset) { > printf(_("offset (%lld) is before start of mapping (%lld)\n"), > @@ -155,7 +155,8 @@ mmap_f( > int argc, > char **argv) > { > - off64_t offset; > + off_t offset; > + > ssize_t length = 0, length2 = 0; > void *address = NULL; > char *filename; > @@ -308,7 +309,7 @@ msync_f( > int argc, > char **argv) > { > - off64_t offset; > + off_t offset; > ssize_t length; > void *start; > int c, flags = 0; > @@ -401,7 +402,7 @@ mread_f( > int argc, > char **argv) > { > - off64_t offset, tmp, dumpoffset, printoffset; > + off_t offset, tmp, dumpoffset, printoffset; > ssize_t length; > size_t dumplen, cnt = 0; > char *bp; > @@ -566,7 +567,7 @@ mwrite_f( > int argc, > char **argv) > { > - off64_t offset, tmp; > + off_t offset, tmp; > ssize_t length; > void *start; > char *sp; > diff --git a/io/pread.c b/io/pread.c > index 0f1d8b97..79990c6a 100644 > --- a/io/pread.c > +++ b/io/pread.c > @@ -116,7 +116,7 @@ alloc_buffer( > static void > __dump_buffer( > void *buf, > - off64_t offset, > + off_t offset, > ssize_t len) > { > int i, j; > @@ -141,7 +141,7 @@ __dump_buffer( > > void > dump_buffer( > - off64_t offset, > + off_t offset, > ssize_t len) > { > int i, l; > @@ -164,7 +164,7 @@ dump_buffer( > static ssize_t > do_preadv( > int fd, > - off64_t offset, > + off_t offset, > long long count) > { > int vecs = 0; > @@ -199,7 +199,7 @@ do_preadv( > static ssize_t > do_pread( > int fd, > - off64_t offset, > + off_t offset, > long long count, > size_t buffer_size) > { > @@ -212,13 +212,13 @@ do_pread( > static int > read_random( > int fd, > - off64_t offset, > + off_t offset, > long long count, > long long *total, > unsigned int seed, > int eof) > { > - off64_t end, off, range; > + off_t end, off, range; > ssize_t bytes; > int ops = 0; > > @@ -259,12 +259,12 @@ read_random( > static int > read_backward( > int fd, > - off64_t *offset, > + off_t *offset, > long long *count, > long long *total, > int eof) > { > - off64_t end, off = *offset; > + off_t end, off = *offset; > ssize_t bytes = 0, bytes_requested; > long long cnt = *count; > int ops = 0; > @@ -319,7 +319,7 @@ read_backward( > static int > read_forward( > int fd, > - off64_t offset, > + off_t offset, > long long count, > long long *total, > int verbose, > @@ -353,7 +353,7 @@ read_forward( > int > read_buffer( > int fd, > - off64_t offset, > + off_t offset, > long long count, > long long *total, > int verbose, > @@ -368,7 +368,7 @@ pread_f( > char **argv) > { > size_t bsize; > - off64_t offset; > + off_t offset; > unsigned int zeed = 0; > long long count, total, tmp; > size_t fsblocksize, fssectsize; > diff --git a/io/pwrite.c b/io/pwrite.c > index 467bfa9f..8d134c56 100644 > --- a/io/pwrite.c > +++ b/io/pwrite.c > @@ -54,7 +54,7 @@ pwrite_help(void) > static ssize_t > do_pwritev( > int fd, > - off64_t offset, > + off_t offset, > long long count, > int pwritev2_flags) > { > @@ -97,7 +97,7 @@ do_pwritev( > static ssize_t > do_pwrite( > int fd, > - off64_t offset, > + off_t offset, > long long count, > size_t buffer_size, > int pwritev2_flags) > @@ -110,13 +110,13 @@ do_pwrite( > > static int > write_random( > - off64_t offset, > + off_t offset, > long long count, > unsigned int seed, > long long *total, > int pwritev2_flags) > { > - off64_t off, range; > + off_t off, range; > ssize_t bytes; > int ops = 0; > > @@ -155,12 +155,12 @@ write_random( > > static int > write_backward( > - off64_t offset, > + off_t offset, > long long *count, > long long *total, > int pwritev2_flags) > { > - off64_t end, off = offset; > + off_t end, off = offset; > ssize_t bytes = 0, bytes_requested; > long long cnt = *count; > int ops = 0; > @@ -214,11 +214,11 @@ write_backward( > > static int > write_buffer( > - off64_t offset, > + off_t offset, > long long count, > size_t bs, > int fd, > - off64_t skip, > + off_t skip, > long long *total, > int pwritev2_flags) > { > @@ -253,7 +253,7 @@ write_buffer( > > static int > write_once( > - off64_t offset, > + off_t offset, > long long count, > long long *total, > int pwritev2_flags) > @@ -275,7 +275,7 @@ pwrite_f( > char **argv) > { > size_t bsize; > - off64_t offset, skip = 0; > + off_t offset, skip = 0; > long long count, total, tmp; > unsigned int zeed = 0, seed = 0xcdcdcdcd; > size_t fsblocksize, fssectsize; > diff --git a/io/reflink.c b/io/reflink.c > index 8e4f3899..b6a3c05a 100644 > --- a/io/reflink.c > +++ b/io/reflink.c > @@ -98,7 +98,7 @@ dedupe_f( > int argc, > char **argv) > { > - off64_t soffset, doffset; > + off_t soffset, doffset; > long long count, total; > char *infile; > int condensed, quiet_flag; > @@ -226,7 +226,7 @@ reflink_f( > int argc, > char **argv) > { > - off64_t soffset, doffset; > + off_t soffset, doffset; > long long count = 0, total; > char *infile = NULL; > int condensed, quiet_flag; > diff --git a/io/seek.c b/io/seek.c > index 6734ecb5..ffe7439c 100644 > --- a/io/seek.c > +++ b/io/seek.c > @@ -63,8 +63,8 @@ static void > seek_output( > int startflag, > char *type, > - off64_t start, > - off64_t offset) > + off_t start, > + off_t offset) > { > if (offset == -1) { > if (errno == ENXIO) { > @@ -92,7 +92,7 @@ seek_f( > int argc, > char **argv) > { > - off64_t offset, start; > + off_t offset, start; > size_t fsblocksize, fssectsize; > int c; > int current; /* specify data or hole */ > diff --git a/io/sendfile.c b/io/sendfile.c > index a003bb55..2ce569c2 100644 > --- a/io/sendfile.c > +++ b/io/sendfile.c > @@ -34,12 +34,12 @@ sendfile_help(void) > > static int > send_buffer( > - off64_t offset, > + off_t offset, > size_t count, > int fd, > long long *total) > { > - off64_t off = offset; > + off_t off = offset; > ssize_t bytes, bytes_remaining = count; > int ops = 0; > > @@ -66,7 +66,7 @@ sendfile_f( > int argc, > char **argv) > { > - off64_t offset = 0; > + off_t offset = 0; > long long count, total; > size_t blocksize, sectsize; > struct timeval t1, t2; > diff --git a/io/stat.c b/io/stat.c > index b57f9eef..e8f68dc3 100644 > --- a/io/stat.c > +++ b/io/stat.c > @@ -21,7 +21,7 @@ static cmdinfo_t stat_cmd; > static cmdinfo_t statfs_cmd; > static cmdinfo_t statx_cmd; > > -off64_t > +off_t > filesize(void) > { > struct stat st; > diff --git a/io/sync_file_range.c b/io/sync_file_range.c > index 94285c22..2375a060 100644 > --- a/io/sync_file_range.c > +++ b/io/sync_file_range.c > @@ -30,7 +30,7 @@ sync_range_f( > int argc, > char **argv) > { > - off64_t offset = 0, length = 0; > + off_t offset = 0, length = 0; > int c, sync_mode = 0; > size_t blocksize, sectsize; > > diff --git a/io/truncate.c b/io/truncate.c > index 1d049194..a74b6131 100644 > --- a/io/truncate.c > +++ b/io/truncate.c > @@ -16,7 +16,7 @@ truncate_f( > int argc, > char **argv) > { > - off64_t offset; > + off_t offset; > size_t blocksize, sectsize; > > init_cvtnum(&blocksize, §size); > diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c > index ccd1501a..4eba0094 100644 > --- a/libxfs/rdwr.c > +++ b/libxfs/rdwr.c > @@ -576,7 +576,7 @@ libxfs_balloc( > > > static int > -__read_buf(int fd, void *buf, int len, off64_t offset, int flags) > +__read_buf(int fd, void *buf, int len, off_t offset, int flags) > { > int sts; > > @@ -639,7 +639,7 @@ libxfs_readbufr_map(struct xfs_buftarg *btp, struct xfs_buf *bp, int flags) > fd = libxfs_device_to_fd(btp->bt_bdev); > buf = bp->b_addr; > for (i = 0; i < bp->b_nmaps; i++) { > - off64_t offset = LIBXFS_BBTOOFF64(bp->b_maps[i].bm_bn); > + off_t offset = LIBXFS_BBTOOFF64(bp->b_maps[i].bm_bn); > int len = BBTOB(bp->b_maps[i].bm_len); > > error = __read_buf(fd, buf, len, offset, flags); > @@ -798,7 +798,7 @@ err: > } > > static int > -__write_buf(int fd, void *buf, int len, off64_t offset, int flags) > +__write_buf(int fd, void *buf, int len, off_t offset, int flags) > { > int sts; > > @@ -864,7 +864,7 @@ libxfs_bwrite( > void *buf = bp->b_addr; > > for (i = 0; i < bp->b_nmaps; i++) { > - off64_t offset = LIBXFS_BBTOOFF64(bp->b_maps[i].bm_bn); > + off_t offset = LIBXFS_BBTOOFF64(bp->b_maps[i].bm_bn); > int len = BBTOB(bp->b_maps[i].bm_len); > > bp->b_error = __write_buf(fd, buf, len, offset, > diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c > index 7c1a66c4..bb54e382 100644 > --- a/mdrestore/xfs_mdrestore.c > +++ b/mdrestore/xfs_mdrestore.c > @@ -116,7 +116,7 @@ perform_restore( > /* ensure device is sufficiently large enough */ > > char *lb[XFS_MAX_SECTORSIZE] = { NULL }; > - off64_t off; > + off_t off; > > off = sb.sb_dblocks * sb.sb_blocksize - sizeof(lb); > if (pwrite(dst_fd, lb, sizeof(lb), off) < 0) > diff --git a/repair/prefetch.c b/repair/prefetch.c > index 017750e9..35b50134 100644 > --- a/repair/prefetch.c > +++ b/repair/prefetch.c > @@ -475,7 +475,7 @@ pf_batch_read( > { > struct xfs_buf *bplist[MAX_BUFS]; > unsigned int num; > - off64_t first_off, last_off, next_off; > + off_t first_off, last_off, next_off; > int len, size; > int i; > int inode_bufs; > diff --git a/scrub/spacemap.c b/scrub/spacemap.c > index 03440d3a..00bee179 100644 > --- a/scrub/spacemap.c > +++ b/scrub/spacemap.c > @@ -97,11 +97,11 @@ scan_ag_rmaps( > struct scrub_ctx *ctx = (struct scrub_ctx *)wq->wq_ctx; > struct scan_blocks *sbx = arg; > struct fsmap keys[2]; > - off64_t bperag; > + off_t bperag; > int ret; > > - bperag = (off64_t)ctx->mnt.fsgeom.agblocks * > - (off64_t)ctx->mnt.fsgeom.blocksize; > + bperag = (off_t)ctx->mnt.fsgeom.agblocks * > + (off_t)ctx->mnt.fsgeom.blocksize; > > memset(keys, 0, sizeof(struct fsmap) * 2); > keys->fmr_device = ctx->fsinfo.fs_datadev; > diff --git a/spaceman/freesp.c b/spaceman/freesp.c > index 70dcdb5c..f5177cb4 100644 > --- a/spaceman/freesp.c > +++ b/spaceman/freesp.c > @@ -62,7 +62,7 @@ static void > addtohist( > xfs_agnumber_t agno, > xfs_agblock_t agbno, > - off64_t len) > + off_t len) > { > long i; > > @@ -152,7 +152,7 @@ scan_ag( > struct fsmap *l, *h; > struct fsmap *p; > struct xfs_fd *xfd = &file->xfd; > - off64_t aglen; > + off_t aglen; > xfs_agblock_t agbno; > unsigned long long freeblks = 0; > unsigned long long freeexts = 0; > diff --git a/spaceman/trim.c b/spaceman/trim.c > index e9ed47e4..727dd818 100644 > --- a/spaceman/trim.c > +++ b/spaceman/trim.c > @@ -26,7 +26,7 @@ trim_f( > struct xfs_fd *xfd = &file->xfd; > struct xfs_fsop_geom *fsgeom = &xfd->fsgeom; > xfs_agnumber_t agno = 0; > - off64_t offset = 0; > + off_t offset = 0; > ssize_t length = 0; > ssize_t minlen = 0; > int aflag = 0; > -- > 2.42.1 >