* Joanne Koong: > On Wed, Aug 13, 2025 at 8:24 AM Miklos Szeredi <mszeredi@xxxxxxxxxx> wrote: >> >> The FUSE protocol uses struct fuse_write_out to convey the return value of >> copy_file_range, which is restricted to uint32_t. But the COPY_FILE_RANGE >> interface supports a 64-bit size copies and there's no reason why copies >> should be limited to 32-bit. >> >> Introduce a new op COPY_FILE_RANGE_64, which is identical, except the >> number of bytes copied is returned in a 64-bit value. >> >> If the fuse server does not support COPY_FILE_RANGE_64, fall back to >> COPY_FILE_RANGE. > > Is it unacceptable to add a union in struct fuse_write_out that > accepts a uint64_t bytes_copied? > struct fuse_write_out { > union { > struct { > uint32_t size; > uint32_t padding; > }; > uint64_t bytes_copied; > }; > }; > > Maybe a little ugly but that seems backwards-compatible to me and > would prevent needing a new FUSE_COPY_FILE_RANGE64. Even with a capability flag, it encourages the presence of bugs that manifest only on big-endian systems. Thanks, Florian