On Thu, Aug 14, 2025 at 03:18:00PM +1000, David Disseldorp wrote: > This is another preparatory change to allow for reflink-optimized > cpio archives with file data written / cloned via copy_file_range(). > The output file is truncated prior to write, so that it maps to > usr/gen_initramfs.sh usage. It may make sense to offer an append option > in future, for easier archive concatenation. > > Signed-off-by: David Disseldorp <ddiss@xxxxxxx> > --- > usr/gen_init_cpio.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/usr/gen_init_cpio.c b/usr/gen_init_cpio.c > index d8779fe4b8f1f..563594a0662a6 100644 > --- a/usr/gen_init_cpio.c > +++ b/usr/gen_init_cpio.c > @@ -110,7 +110,7 @@ static int cpio_trailer(void) > || push_pad(padlen(offset, 512)) < 0) > return -1; > > - return 0; > + return fsync(outfd); > } > > static int cpio_mkslink(const char *name, const char *target, > @@ -532,7 +532,7 @@ static int cpio_mkfile_line(const char *line) > static void usage(const char *prog) > { > fprintf(stderr, "Usage:\n" > - "\t%s [-t <timestamp>] [-c] <cpio_list>\n" > + "\t%s [-t <timestamp>] [-c] [-o <output_path>] <cpio_list>\n" > "\n" > "<cpio_list> is a file containing newline separated entries that\n" > "describe the files to be included in the initramfs archive:\n" > @@ -569,7 +569,8 @@ static void usage(const char *prog) > "as mtime for symlinks, directories, regular and special files.\n" > "The default is to use the current time for all files, but\n" > "preserve modification time for regular files.\n" > - "-c: calculate and store 32-bit checksums for file data.\n", > + "-c: calculate and store 32-bit checksums for file data.\n" > + "<output_path>: write cpio to this file instead of stdout\n", gen_init_cpio writes only a single output file (instead of multiple files to an output directory), I'd suggest to name the parameter just 'file' or 'output_file'. I'd like to see the the '... -o ...' patch right after this one. For compilability, I had to add #define _LARGEFILE64_SOURCE or #define _GNU_SOURCE as you do in the next patch, in order to get O_LARGEFILE defined. Kind regards, Nicolas